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

求大神解答

觉得最后结果不是应该result=1吗?为什么会是120,最后不是进入了这个条件语句了?

else if(n==0||n==1)

{

result=1;

}

为什么不是返回的result=1

提问者:我带你飞 2015-10-11 23:24

个回答

  • onemoo
    2015-10-11 23:42:22
    已采纳

    递归是在函数中再次调用自己,也就是层层调用。

    最后一次调用factorial——也就是最深的那次调用——肯定是进入这个判断分支了,会返回1。但并不是返回给main中的num,这个1会返回给前一次调用的factorial函数。 然后这层层调用会依次将返回值返回给调用者,直到返回至最早的那次factorial函数调用,再返回给main中的num。

    更具体的说明请看这里我的回答: http://www.imooc.com/qadetail/90499

  • 我带你飞
    2015-10-12 12:14:06

    非常感谢= =