0x09:龟龟!递归!
作业要求:
使用求阶乘函数Fact() 并输出1到n之间所有数的阶乘值。
#include <stdio.h>
int Fact(int n)
{
int f;
if(n<0)
printf("error!You should input n>=0");//异常处理
else if(n==1||n==0)//这里只是因为n=1时fact(0)可能会出现问题才写了这么一句。
{
return 1;
}
else
{
f=Fact(n-1)*n;
return f;
}
/*
个人理解:f保存,其实就是10*9*8
*/
}
int main()
{
int a;
int i;
printf("Input value of n\n");
scanf("%d",&a);
for(i=a;i>=1;i=i-1)
{
int c;
c=Fact(i);//传进来一个a=10 i=10 对I=10阶乘 之后继续循环 对i=9阶乘 直到i=1为止。
printf("%d!=%d\n",i,c);
}
}
今天写的时候只是出现了一个问题,问题代码提示在这里:
else if(n=1||n=0)
一开始还没看明白是什么原因,后来查询发现告诉我什么赋值的问题
看到代码以后瞬间明白为什么出现报错,(被高数折磨过多导致忘记了一个等于号不是等于这件事)改成下面代码成功执行:
else if(n==1||n==0)
总的来说还是比较顺利的。
附上成功的截图: