为了账号安全,请及时绑定邮箱和手机立即绑定

输出结果是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;


正在回答

2 回答

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

0 回复 有任何疑惑可以回复我~
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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信