刚自学C语言,看不明白递归调用的执行顺序啊。当执行完f=1,在执行return时,,他那么会求到5!例如输入5

2025-03-07 02:27:38
推荐回答(4个)
回答1:

首先你需要把那个else if (n==0, n==1) 的逗号改成或:else if (n == 0 || n == 1)
这样的话才正确,否则输入0就报错了。
关于递归顺序问题就是一层层的展开,没什么复杂的,哪里不明白?

回答2:

比如求fac(5);fac(5)=fac(4)*5;就必须去求fac(4),依次类推,只有当n=1时有了值,再反过来求fac(2)……

回答3:

这个递归是有点复杂,搞清了就简单,建议请人现场讲解,文字说也是难看懂的

回答4:

关键语句:
f=fac(n-1)*n;