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

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

#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;


提问者:慕雪9588076 2017-11-11 17:20

个回答

  • 饼神
    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