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

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

http://img.mukewang.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顺序回答,谢谢!!

提问者:86338730 2016-01-08 01:12

个回答

  • 努力提升
    2016-01-08 10:09:42
    已采纳

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

  • 努力提升
    2016-01-08 14:29:21

    没有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;这样一个过程