數列:2/1, 3/2, 5/3, 8/5, 13/8, ...
numerator[i] = numerator[i-1] + denominator[i-1],denominator[i] = numerator[i-1]。#include <stdio.h>
int main() {
double sum = 0.0;
double numerator = 2.0, denominator = 1.0;
for (int i = 1; i <= 20; ++i) {
sum += numerator / denominator;
double next_numerator = numerator + denominator;
double next_denominator = numerator;
numerator = next_numerator;
denominator = next_denominator;
}
printf("前 20 項和 = %.10f\n", sum);
return 0;
}
double fib_frac_sum_recursive(int n, double num, double den) {
if (n == 0) return 0;
return num/den + fib_frac_sum_recursive(n-1, num+den, num);
}
// 呼叫:fib_frac_sum_recursive(20, 2.0, 1.0);
前 20 項和 = 32.6602607323
使用 double 雙精度足以應付 20 項精度需求。若項數極大,建議用長雙精度 long double 或任意精度庫。