使用 `for` 迴圈計算從 1! 累加到 n! 的總和,即 S = 1! + 2! + 3! + ... + n!。
採用模組化設計:撰寫一個計算階乘的函式 `factorial()`,主程式迴圈累加呼叫該函式。
#include <stdio.h>
// 計算階乘的函式
long long factorial(int n) {
if (n <= 1) return 1;
long long result = 1;
for (int i = 2; i <= n; i++) {
result *= i;
}
return result;
}
int main() {
int n;
printf("請輸入正整數 n: ");
scanf("%d", &n);
long long sum = 0;
for (int i = 1; i <= n; i++) {
sum += factorial(i);
}
printf("1! + 2! + ... + %d! = %lld\n", n, sum);
return 0;
}
請輸入正整數 n: 5
1! + 2! + ... + 5! = 153
驗算:1 + 2 + 6 + 24 + 120 = 153 ✓
若 n 較大,可避免重複計算:在主迴圈中直接維護當前階乘值,每輪乘以 i 即可,無需額外函式呼叫:
long long current_fact = 1;
long long sum = 0;
for (int i = 1; i <= n; i++) {
current_fact *= i; // i! = (i-1)! * i
sum += current_fact;
}
此法減少函式呼叫開銷,效能更佳。