經典 C 語言筆試題:求分數數列前 20 項之和。數列規律:分子分母均為斐波那契數列,前項分母為後項分子,前項分子+分母 = 後項分子。
數列:2/1, 3/2, 5/3, 8/5, 13/8, 21/13, ... 規律: - 分子:2, 3, 5, 8, 13, 21... (斐波那契) - 分母:1, 2, 3, 5, 8, 13... (斐波那契錯位) - 遞推:新分子 = 舊分子 + 舊分母;新分母 = 舊分子 求前 20 項和。
#includeint main() { float numerator = 2.0f; // 分子 float denominator = 1.0f; // 分母 float sum = 0.0f; int i = 0; float temp; while (i < 20) { sum += numerator / denominator; // 累加當前項 // 遞推下一項 temp = numerator; numerator = numerator + denominator; // 新分子 = 舊分子 + 舊分母 denominator = temp; // 新分母 = 舊分子 i++; } printf("前20項和: %g\n", sum); return 0; }
前20項和: 32.6603
| 步驟 | 分子 | 分母 | 當前項值 | 累積和 |
|---|---|---|---|---|
| 1 | 2 | 1 | 2.000000 | 2.000000 |
| 2 | 3 | 2 | 1.500000 | 3.500000 |
| 3 | 5 | 3 | 1.666667 | 5.166667 |
| 4 | 8 | 5 | 1.600000 | 6.766667 |
| 5 | 13 | 8 | 1.625000 | 8.391667 |
| ... | ... | ... | ... | ... |
| 20 | 17711 | 10946 | 1.618034 | 32.6603 |