繁体   English   中英

这个问题需要解决方案吗?

[英]Solution needed for this issue?

非负整数 n 的阶乘 n!,定义为所有小于或等于 n 的正整数的乘积:

0! = 1

啊! = 1×2×3×…×n

在以下用于计算 n! 值的代码摘录中找出错误。

private int fact(int n){
    int nf = 1;
    for (int i = 1; i < n; ++i) {
        nf *= i; 
    }
    return nf; 
}

完成后,我必须重写此函数以删除“for”循环。

非常感谢任何建议!

这是家庭作业问题吗? 如果是这样,您应该将其标记为这样。

无论如何,错误在这里:

    for (int i = 1; i < n; ++i)
    {
        nf *= i; 
    }

在你的 for 循环中,你让它上升到 n,这将计算 (n-1)!。 例如,输入 4 将得到 1 * 2 * 3,即 3!。

通过循环到 n 来修复它,所以 i < n+1。

您还可以使用递归:

int fact(int n){
    int nf;

    if(n==1)
       return 1;

    nf = fact(n-1) * n;
    return nf;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM