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

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

86338730

2016-01-08 01:12

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顺序回答,谢谢!!

写回答 关注

2回答

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

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

    863387...

    非常感谢!

    2016-01-08 17:54:37

    共 2 条回复 >

  • 努力提升
    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;这样一个过程

C语言入门

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

926209 学习 · 20797 问题

查看课程

相似问题