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

我想问例子阶乘递归那道题

http://img1.sycdn.imooc.com//568e93e4000197b103700395.jpg  

新手。。我的递归理解是裤子脱掉然后又穿上,这样理解对吗?

①就算自定义函数写在main函数前面,程序还是从main开始执行吗?                                 ②else if(n==0||n==1)这句里的n==0貌似根本不会有这种情况,他的意义是什么呢?            ③定义n=5,那么第一次是factorial(5-1)*5,4*5=20,这个结果存到哪里去了?                   ④运行到factorial(2-1)*2的时候,factorial(1)符合了else if(n==0||n==1)里面的n==1,执行result=1,下一步应该执行哪里呢?这时n=1,重新开始执行的话那就不是陷在else if了吗,那么是怎么1*2*3....5的.

⑤还有。。if(n<0)这句好像也没执行过。。。

我的废话会不会太多了,希望大神针对我的12345顺序回答,谢谢!!

正在回答

2 回答

首先,执行的时候是先从main函数开始运行;其次第二和第五个问题其实是一样的,因为你写这个函数是要考虑到多方面的因素的,这里没用到是因为在main函数中n = 5;如我把-1或者0赋值给n呢?这个时候就要通过以上的判断了;最后,你没有理解递归的过程,其实数学计算过程是发生在逆推的过程,就是从factorial(1)回到factorial(5),再好好看下课程最上面的那个图

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

86338730 提问者

我最主要的问题是当满足factorial(1),开始逆推的时候,factorial(1)是哪个条件使他变成factorial(3-1)*2的?
2016-01-08 回复 有任何疑惑可以回复我~
#2

86338730 提问者

非常感谢!
2016-01-08 回复 有任何疑惑可以回复我~

没有factorial(3-1)*2这一步啊,是factorial(2-1)*2,factorial(1) = 1,然后factorial(2) = factorial(1) * 2 =2,

然后factorial(3) = factorial(2) * 3 = 6;factorial(4) = factorial(3) * 4 = 24;factorial(5) = factorial(4) * 5 = 120;这样一个过程

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

举报

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

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

进入课程

我想问例子阶乘递归那道题

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