输出结果是1,为什么是120了?

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

慕雪9588076

2017-11-11 17:20

#include<stdio.h>

int factorial(int n){

    int result;

    if(n<0)

    {

        printf("输入错误!\n");

        return 0;

    }

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

    {

        result=1;

    }

    else

    {

        result=factorial(n-1)*n;

    }

    return result;

}

 

int main(){

    int n=5;

    printf("%d的阶乘=%d\n",n,factorial(n));

    return 0;


写回答 关注

2回答

  • 饼神
    2018-03-19 00:25:46

    最后的main少了一个结尾的},结果运行时120。不断调用自身,等于是执行(n-1)*n,然后紧接着继续执行((n-1)-1)*(n-1),然后不断执行到等于1

  • 异步加载
    2017-11-11 22:23:16
    result=factorial(n-1)*n;

    这句话里面的factorial(n-1)*n是调用函数。

    相当于

    factorial(5-1)*5

    factorial(4-1)*5

    factorial(3-1)*5

    factorial(2-1)*5

    factorial(1-1)*5

    n=1结束

    输出120

C语言入门

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

926210 学习 · 20797 问题

查看课程

相似问题