方法一、調用函數
輸入下面的代碼並保存為factorial.c:
/*計算1! + 2! + 3! + ... +100!的值*/ #include <stdio.h> #define MAX 100 double factorial(int a); //函數聲明,詳細代碼往下看 int main() { int i; double sum = 0; for (i = 1; i <= MAX; i++) sum += factorial(i); printf("1! + 2! + 3! + ... +100! = %e\n", sum); return 0; } double factorial(int a) { double fact = 1; for (int i = 1; i <= a; i++) { //這里for循環也可以使用: for (int i = a; i >= 2; i--) fact *= i; } return fact; }
編譯並執行:
gcc factorial.c && ./a.out
結果為:
1! + 2! + 3! + ... +100! = 9.426900e+157
Python代碼:
# 1! + 2! + 3! + ... + 100! = def factorial(n): fact = 1 for i in range(1, n+1): fact *= i return fact s = 0 for i in range(1, 101): s += factorial(i) print(f"s={s}")
輸出結果:
s=94269001683709979260859834124473539872070722613982672442938359305624678223479506023400294093599136466986609124347432647622826870038220556442336528920420940313
如果把
print(f"s={s}")
改為
print("s=%e"%s)
輸出結果為:
s=9.426900e+157
與C的結果一致
二、循環嵌套法:
// 使用循環嵌套的方式計算1!+2!+3!+...100!
#include <stdio.h> #define MAX 100 int main() { double sum=0; int i, j; for (i=1; i<=MAX; i++) { //接下來,思考:如何在這個for循環里面把每個階乘都計算出來 double s=1; for (j=1; j<=i; j++) { s = j*s; } sum += s; } printf("sum=%le\n",sum); return 0; }
輸出結果:
sum=9.426900e+157