先写如何编写,想法
想全步骤不能有漏洞。
#include "stdio.h"
int main()
{
int a(int n);//形参,这里是声明。
int y;int n;
printf("请输入一个需要阶乘的数\n")
scanf("%d",&n);
printf("%d\n",a(n));
y=a(n);
printf("%d!的阶乘为%d\n",n,y);
return 0;
}
int a(int n)
{
int f;
if(n<0)
{printf("输入错误!");}
else if(n==0||n==1)
f=1;
else{
f=n*a(n-1);//递归,调用自己。
}
return f;//必须返回值
}
例如求5的阶乘:
5 x a(4) x a(3) x a(2) x a(1) x a(0) 由于返回值为f,f会给函数所以如下
在n等于1或者0之前是一直不会return的
遇到等于1或者0时才会用到返回值
5 x 4 x 3 x 2 x 1