有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…用递归函数的方式求出这个数列的前20项之和--C语言代码
时间: 2024-09-07 19:04:14 浏览: 46
应用时间序列笔记+习题代码1
这个分数序列实际上是著名的斐波那契数列对应的分数形式,其中分子是第n个斐波那契数,分母是F(n-1)。要使用递归函数计算这个数列的前20项之和,我们可以创建一个C语言函数,如下所示:
```c
#include <stdio.h>
// 斐波那契数列递归函数
long long fibonacci(int n) {
if (n <= 1)
return n;
else
return fibonacci(n - 1) + fibonacci(n - 2);
}
// 计算分数的值并累加到总和
double fraction_sum(int index, long long fib_num, long long prev_fib) {
double result = (double)fib_num / prev_fib;
total_sum += result;
return result;
}
int main() {
long long total_sum = 0; // 初始化总和
int num = 20;
for (int i = 1; i <= num; ++i) {
long long fib = fibonacci(i); // 当前项的分子
long long prev_fib = fibonacci(i - 1); // 上一项的分子
fraction_sum(i, fib, prev_fib); // 累加当前分数到总和
}
printf("前20项分数和为: %.9lf\n", total_sum);
return 0;
}
```
注意:由于递归会产生大量的重复计算,对于较大的数值,此递归方法效率不高。如果需要优化,可以考虑使用动态规划或其他迭代方法。
阅读全文