0x10:里面?外面!
作业要求:计算1!+…+n!的值
先放上一张成功的截图:
再放下代码:
#include <stdio.h>
//计算1!+…+n!的值
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;
int sum=0;
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为止。
sum+=c;
}
printf("sum%d",sum);
}
这代码只是对上个代码修改了几下
其中做的时候出现问题的地方在这里:
Sum一开始我定义在循环体内,打印也打印在循环体里,就出现了
Sum:120
…
这样的感觉..
于是想起来或许是打印的问题,但当我打印在外面的时候,提示我sum没定义?
突然想起来sum定义的地方有问题
直接把sum定义在外面并且一定要定义sum=0(不然会出现些奇奇怪怪的数据)
之后按照构思再写了一下,完成。
总的来说还是一开始逻辑出现点小问题,调试一下就完事了。
