慕雪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;
最后的main少了一个结尾的},结果运行时120。不断调用自身,等于是执行(n-1)*n,然后紧接着继续执行((n-1)-1)*(n-1),然后不断执行到等于1
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语言入门
926210 学习 · 20797 问题
相似问题