#C语言# 请问用递归实现 n!为什么是死循环?

int Fac(int m)
{
int j = 1;
int k = 0;
if(j<m)
{
return k * Fac(j + 1);
}
return 1;
}

int main()
{
int n = 0;
scanf("%d", &n);
printf("%d ", Fac(n));
return 0;

}

在这个递归函数中,循环终止条件应该是 j >= m 而不是 j < m,否则函数将一直递归调用下去,直到栈溢出,导致死循环。
此外,在递归调用中,应该传递 (m - 1) 而不是 (j + 1),以便递归到最终结果。
以下是修正后的代码:
int Fac(int m)
{
if (m <= 1) { // 递归终止条件
return 1;
} else {
return m * Fac(m - 1); // 递归调用
}
}
int main()
{
int n = 0;
scanf("%d", &n);
printf("%d\n", Fac(n));
return 0;
}
在此修正后的代码中,函数Fac()将会正确地递归计算n的阶乘,并返回正确的结果。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网