對不起,程序的返回類型寫錯了,我現在更正一下
#include <stdio.h>
long int fun(int i)
{
if(i == 1)
return 1;
return i * fun(i-1);
}
int main(void)
{
int i;
long int sum = 0;
for(i=1; i<=20; i++)
{
sum = sum + fun(i);
}
printf("%ld\n", sum);
return 0;
}
#include <stdio.h>
long int fun(int i)
{
if(i == 1)
return 1;
return i * fun(i-1);
}
int main(void)
{
int i;
long int sum = 0;
for(i=1; i<=20; i++)
{
sum = sum + fun(i);
}
printf("%ld\n", sum);
return 0;
}
2017-09-19
時間倉促,我就沒寫注釋了,如果哪里不懂可以繼續問
2017-09-19
#include<stdio.h> #define?MAXN?100 int?ans[MAXN],num[MAXN]; int?cnt_ans,cnt_num; void?add() { int?i; int?jinwei=0; for(i=0;i<cnt_num;i++) { int?temp=ans[i]+num[i]+jinwei; ans[i]=temp%10; jinwei=temp/10; } cnt_ans=cnt_num; if(jinwei>0) { ans[i]=jinwei; cnt_ans++; } } void??factorial(int?n) { int?i; int?jinwei=0; for(i=0;i<cnt_num;i++) { int?temp=num[i]*n+jinwei; num[i]=temp%10; jinwei=temp/10; } if(jinwei>0) { num[i]=jinwei; cnt_num++; } } void?print() { int?i; for(i=cnt_ans-1;i>=0;i--) { printf("%d",ans[i]); } printf("\n"); } int?main() { int?i; ans[0]=num[0]=1; cnt_ans=cnt_num=1; for(i=2;i<=20;i++) { factorial(i); add(); } print(); }2017-09-19
#include <stdio.h>
int fun(int i)
{
if(i == 1)
return 1;
return i * fun(i-1);
}
int main(void)
{
int i, sum = 0;
for(i=1; i<=20; i++)
{
sum = sum + fun(i);
}
printf("%d\n", sum);
return 0;
}
2017-09-19
因為要計算到20的階乘,結果值將非常大。所以可以用數組來保存數值的每一位。