cpp求序列1,1,2,3,5,8..的前20项的和,序列的规律是前两项和已知,从第三项开始的值等于前两项的和
时间: 2024-06-14 15:03:32 浏览: 73
以下是cpp求序列1,1,2,3,5,8..的前20项的和的代码和解释:
```cpp
#include <iostream>
using namespace std;
int main() {
int n = 20; // 前20项
int a = 1, b = 1; // 前两项
int sum = a + b; // 前两项和
for (int i = 3; i <= n; i++) {
int c = a + b; // 当前项于前两项和
sum += c; // 累加当前项
a = b; // 更新前两项
b = c;
}
cout << "前20项的和为:" << sum << endl;
return 0;
}
```
解释:
- 首先定义变量n表示前20项,a和b分别表示前两项,sum表示前两项的和。
- 然后使用for循环从第三项开始计算,每次计算当前项c等于前两项a和b的和,累加到sum中,然后更新a和b的值。
- 最后输出前20项的和。
相关问题
有一个分数序列 q1/p1,q2/p2,q3/p3,q4/p4,q5/p5,… ,其中qi+1= qi+ pi, pi+1=qi, p1= 1, q1= 2。比如这个序列前6项分别是2/1,3/2,5/3,8/5,13/8,21/13。求这个分数序列的前n项之和。用C+ +
这个问题涉及到计算分数序列的和,可以根据已知的递推公式来设计算法。我们可以使用动态规划的思想,创建两个数组`prev_q`和`prev_p`分别存储前一项的分子和分母。对于每个新的分数,其分子将是上一项的分子和分母之和,而分母保持不变。
下面是一个简单的C++程序实现:
```cpp
#include <iostream>
using namespace std;
void fibonacciSum(int n) {
if (n <= 0) return;
int prev_q = 2; // q1 = 2
int prev_p = 1; // p1 = 1
long long sum = prev_q; // 前两项直接相加作为初始总和
for (int i = 2; i < n; ++i) {
int curr_q = prev_q + prev_p; // qi+1 = qi + pi
long long next_p = prev_q; // pi+1 = qi
sum += curr_q; // 更新总和
prev_q = curr_q; // 更新 prev_q
prev_p = next_p; // 更新 prev_p
}
cout << "前 " << n << " 项之和是: " << sum << endl;
}
int main() {
int n;
cout << "请输入序列的项数: ";
cin >> n;
fibonacciSum(n);
return 0;
}
```
当你运行这个程序并输入序列的项数时,它会输出该分数序列的前n项之和。注意这里为了防止整数溢出,将分子转换成了`long long`类型。
有一个分数序列 2/1,3/2,5/3,8/5,13/8,21/13,.... 求这个分数序列的前n项之和。 【输入形式】 输入有一行:正整数n。C++
这是一个著名的斐波那契数列(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;
}
```
阅读全文