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

老师讲的递归究竟应该怎么理解?

实例代码中有这么一段

result = factorial(n-1)*n;

这个应该怎理解?当时

int n = 5;

那不是应该是 

result = factorial(5-1)*5;

(接上)最后结果等于20吗?

请原谅,我并没有学过数学递归


正在回答

2 回答

应该是(n-1)就用掉了一次再减一,又用掉了一次我是这么理解的

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

qq_淡末初夏_03336219 提问者

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

result = factorial(5-1)*5;看作是result=(factorial(5-1))*(5);乘号左边的factorial(5-1)是不是就是factorial(4),怎样得到factorial(4)呢,这就又调用自定义函数 int factorial(int n){   },参数n就变成4了,此时result = factorial(4-1)*4,同理乘号左边因数factorial(4-1),即factorial(3)怎么算呢,就又调用自定义函数,参数n变为3,以此类推,实际上是先算出factorial(1),返回1,返回值带入函数中算出factorial(2),再返回factorial(2)的值算出factorial(3),再返回直到算出factorial(5),这就是递归的思路。

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

qq_淡末初夏_03336219 提问者

太专业了,我更喜欢楼上的简单粗暴O(∩_∩)O哈!,不过还是谢谢Y(^o^)Y
2016-07-10 回复 有任何疑惑可以回复我~
#2

斟酒独酢

这样一下理解了
2016-09-04 回复 有任何疑惑可以回复我~
#3

qq_Mi_1 回复 斟酒独酢

加油!
2016-09-21 回复 有任何疑惑可以回复我~
查看1条回复

举报

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

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

进入课程

老师讲的递归究竟应该怎么理解?

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