新手。。我的递归理解是裤子脱掉然后又穿上,这样理解对吗?
①就算自定义函数写在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顺序回答,谢谢!!
首先,执行的时候是先从main函数开始运行;其次第二和第五个问题其实是一样的,因为你写这个函数是要考虑到多方面的因素的,这里没用到是因为在main函数中n = 5;如我把-1或者0赋值给n呢?这个时候就要通过以上的判断了;最后,你没有理解递归的过程,其实数学计算过程是发生在逆推的过程,就是从factorial(1)回到factorial(5),再好好看下课程最上面的那个图
没有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;这样一个过程