老师讲的递归究竟应该怎么理解?
实例代码中有这么一段
result = factorial(n-1)*n;
这个应该怎理解?当时
int n = 5;
那不是应该是
result = factorial(5-1)*5;
(接上)最后结果等于20吗?
请原谅,我并没有学过数学递归
实例代码中有这么一段
result = factorial(n-1)*n;
这个应该怎理解?当时
int n = 5;
那不是应该是
result = factorial(5-1)*5;
(接上)最后结果等于20吗?
请原谅,我并没有学过数学递归
2016-07-04
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),这就是递归的思路。
举报