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

例子就没有看懂了呀

求大神来解释下这个例子..我觉得那个自定义函数只能算出5*4=20然后赋值给了return就算再循环return始终还是等于20啊

提问者:IT狂人_ 2016-09-21 10:51

个回答

  • JustWannaHugU
    2016-09-21 14:06:26
    已采纳


    自定义函数的名称不好打,我以fac简写啦~

    最开始的时候调用fac(5)-->result = fac(5-1)*5-->暂停

    接着调用fac(4)-->result = fac(4-1)*4-->暂停

    再接着调用fac(3)-->result = fac(3-1)*3-->暂停

    继续调用fac(2)-->result = fac(2-1)*2-->注意程序要开始啦,因为当n=1的时候result等于1!

    因为    fac(1)的时候会return result=1,所以递归到这一步就要开始逐层返回了

    第一步fac(2)的result = 2*(fac(1))=2

    第二部fac(3)的result = 3*fac(2) = 6

    第三部fac(4)的result = 4*fac(3) = 24

    第四部fac(5)的result = 5*fac(4) = 120


    至此递归函数结束,程序打印输出120

    明白了吧!自己要亲手熟悉一下流程!以后碰到递归就不怕了~~


  • 源远流长d
    2016-10-11 18:36:29

    factorial阶乘的意思,比如说4阶乘,就是1*2*3*4=24,则24为4的阶乘;阶乘用“!”表示,而数学上定义,

    0!=1,1!也等于1.

    回归正题

    result=factorial(n-1)*n;   n先为5,所以result=factorial(4)*5我们要求这个值,但factorial(4)我们也不知道这个值,那么也要求它,可以把4也带进去为factorial(3)*4......

    以下列表

    factorial(4)*5  

                    /\

    factorial (3)*4

                   /\

    factorial(2)*3

                  /\

    factorial(1)*2

                  /\

    factorial(0)*1  //可省略factorial(0)=factorial(1);

    递 (往下)                   归(往上)

    知道了吗?不懂再问,嘿嘿。