有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。 【输入形式】 输入有一行:正整数n。C++
时间: 2024-10-17 18:03:14 浏览: 70
应用时间序列笔记+习题代码1
这是一个著名的斐波那契数列(Fibonacci sequence)的倒置分数版本,即每一项的分子是一个斐波那契数,分母比它小1。斐波那契数列的第n项通常是Fn = Fn-1 + Fn-2(初始值通常取F0 = 0, F1 = 1)。对于这种类型的序列求和,我们可以采用动态规划的思想,利用已知项的结果来计算新的项。
首先,我们需要两个变量存储前两项的和,然后从第三项开始,每一项都是这两项的和。为了计算前n项和,我们还需要一个变量s来累计总和。
以下是一个简单的C++函数来计算这个分数序列的前n项和:
```cpp
#include <iostream>
using namespace std;
// 计算斐波那契数列的第n项
int fibonacci(int n) {
if (n <= 0) return 0;
if (n == 1) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
// 计算分数序列的前n项和
double fraction_sum(int n) {
double prev_fib = 0, current_fib = 1, sum = 1.0; // 分别表示F0和F1
for (int i = 2; i <= n; ++i) {
int denominator = fibonacci(i - 1);
double numerator = fibonacci(i);
sum += numerator / denominator;
}
return sum;
}
int main() {
int n;
cin >> n;
cout << fixed << setprecision(10) << fraction_sum(n) << endl;
return 0;
}
```
阅读全文