C语言递归结束条件问题

发布网友 发布时间:2022-04-01 17:41

我来回答

3个回答

热心网友 时间:2022-04-01 19:10

当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;
} 如果还有什么不懂的可以来问我哈

热心网友 时间:2022-04-01 20:28

要知道,你写的函数是有问题的。大概应该是这样吧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

热心网友 时间:2022-04-01 22:03

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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com