问答详情
源自:5-7 递归函数(一)

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

实例代码中有这么一段

result = factorial(n-1)*n;

这个应该怎理解?当时

int n = 5;

那不是应该是 

result = factorial(5-1)*5;

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

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


提问者:qq_淡末初夏_03336219 2016-07-04 10:17

个回答

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

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