为了账号安全,请及时绑定邮箱和手机立即绑定

这个代码看不懂

result=factorial(n-1)*n;

return result;


正在回答

2 回答

这个就是调用自身

在n是5的情况下,

result=factorial(4)*5

此时factorila(4)结果未知,继续将factorila(4)代入函数

,factorila(3)结果又是未知的,以此类推

当n==1时,result结果为1,所以

当n==5时:

result=factorial(4)*5=factorial(3)*4*5=factorial(2)*3*4*5=factorial(1)*2*3*4*5=1*2*3*4*5=120


2 回复 有任何疑惑可以回复我~
#1

慕虎9034038

我有问题,就是当在n是5的情况下, result=factorial(4)*5 此时factorila(4)结果未知,继续将factorila(4)代入函数 ,factorila(3)结果又是未知的,以此类推/ 当n==1时,result结果为1,那不就输出为1了吗
2020-02-25 回复 有任何疑惑可以回复我~
#2

慕函数1353974 回复 慕虎9034038

你说的不对啊,我看懂了,就是其实最后求得值是factorial(4)*5,然后把factorial代出来,但是并不是说输出为1,而是计算机有办法求值,所以它通过你列的函数会将未知的解出来
2020-02-28 回复 有任何疑惑可以回复我~
#3

慕函数1353974 回复 慕虎9034038

你懂了吗
2020-02-28 回复 有任何疑惑可以回复我~
#4

qq_慕雪2531647 回复 慕虎9034038

不会输出1的,你把它理解成一种嵌套,就和数学里的f(f(x)),factorial(4)里面包含了factorial(1)*2*3*4*5,而当n==1时,result结果为1,只是计算中的一步。
2020-02-29 回复 有任何疑惑可以回复我~
查看1条回复

进行四次递归调用后,实参的值为 1,会调用 factorial(1)。此时能够直接得到常量 1 的值,并把结果 return,就不需要再次调用 factorial() 函数了,递归就结束了

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

这个代码看不懂

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信