例题中为什么n的值没有变,却能计算阶乘呢。

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

慕先生6658929

2016-04-10 07:01

例题中为什么n的值没有变,却能计算阶乘呢。

写回答 关注

2回答

  • qq_六月天_0
    2016-04-10 13:55:18
    已采纳

    long factorial(int n){

    long result;


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

    result = 1;

    }else{

    result = factorial(n-1) * n;  // 递归调用

    }


    return result;

    }

    求 5!,即调用factorial(5)。当进入factorial函数体后,由于 n=5,不等于0或1,所以执行result = factorial(n-1) * n;,即result = factorial(5-1) * 5;,接下来也就是调用factorial(4)。这是第一次递归。

    进行四次递归调用后,实参的值为 1,也就是调用factorial(1)。这时递归就结束了,开始逐层返回。factorial(1) 的值为 1,factorial(2) 的值为 1*2=2,factorial(3) 的值为 2*3=6,factorial(4) 的值为 6*4=24,最后返回值 factorial(5) 为 24*5=120。

    希望能帮到你

    慕先生665...

    其实我刚发出去就理解了;感谢你的乐于助人

    2016-04-10 16:17:08

    共 2 条回复 >

  • 别怪我不好
    2016-07-06 18:11:52

    非常感激,这里解决了我的一大部分疑惑。

C语言入门

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

926025 学习 · 20793 问题

查看课程

相似问题