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

计算n的阶乘可以使用以下代码,没有循环怎么实现阶乘的呢?

http://img.mukewang.com/5764d70c000197b103700395.jpg

如果n=5,在方法里result = factorial(n-1)*n; 实现的应该是4*5,为什么还会1*2*3*4*5呢???

新手这里面没有循序,所以想不明白,请大神指点一下!!!!!

提问者:go_bacK_love 2016-06-18 13:10

个回答

  • sunny阳光
    2016-07-06 15:18:07
    已采纳

    ”当碰到一个条件的时候都会再重复的从头说起“,理解这句话就行了,程序执行到“result=factorial(n-1)*n时,遇到了factorial(n-1),所以程序要从头开始执行,此时n=n-1;这就完成了循环

  • 0ulc
    2016-06-19 00:26:24

    factorial()是个递归函数,当执行result = factorial(n-1)*n;时,实现的并不是4*5,因为factorial(n-1)会继续执行函数factorial()。简单来说就是函数里面套函数,直到满足跳出条件(本例中,main函数中n=5,所以它的跳出条件就是n==1),某种意义上也是一种循环吧



  • weibo_番茄爱炒蛋900_03360757
    2016-06-18 15:29:08

    factorial(5)  result=f(4)*5

    f(4)  result=f(3)*4

    f(3)  result=f(2)*3

    f(2)  result=f(1)*2

    f(1)  result=1

    然后跳出 往回带  result=1*2*3*4*5

    return result