[英]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.