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

来源:5-7 递归函数(一)

qq_淡末初夏_03336219

2016-07-04 10:17

实例代码中有这么一段

result = factorial(n-1)*n;

这个应该怎理解?当时

int n = 5;

那不是应该是 

result = factorial(5-1)*5;

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

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


写回答 关注

2回答

  • qq_小渣_0
    2016-07-04 12:45:48
    已采纳

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

    qq_淡末初...

    非常感谢!

    2016-07-07 11:17:04

    共 1 条回复 >

  • qq_Mi_1
    2016-07-10 16:28:52

    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),这就是递归的思路。

    qq_Mi_... 回复斟酒独酢

    加油!

    2016-09-21 17:17:20

    共 4 条回复 >

C语言入门

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

926026 学习 · 20793 问题

查看课程

相似问题