C语言递归结束条件问题

2025-03-09 13:27:17
推荐回答(3个)
回答1:

当n=3时 就执行f=fac(n-1)*n 即f=fac(2)*3 然后再执行fac(2) 即f=fac(1)*2综合起来 就是fac(1)*2*3 现在当n=1的时候,就会执行if(n<=1) print"Error"这句话了 而又因为fac是个函数 有返回值 此时就会报错了。。。我帮你对这个程序进行改进了
int fac(int n)
{ if(n<=1)
//printf "Error";
return 1;
else return fac(n-1)*n;
} 如果还有什么不懂的可以来问我哈

回答2:

要知道,你写的函数是有问题的。大概应该是这样吧int fac(int n){ if(n<=1) return 1; else fac(n-1)*n; } 如果是这样的话,过程应该是n=3 f(2)*3;n=2 f(1)*2n=1 1 结果就是1*2*3=6

回答3:

error告诉你是错误的意思。它说如果n小于等于1就是错误的。所以当n=3时就可以进行下一个步骤了啊!所以最后就是对的啊!