用c++编写 循环求分数序列:2/1,3/2,5/3,8/5,13/8,21/13,…,前n项之和
时间: 2023-12-13 22:22:53 浏览: 70
好的,我可以帮你写一个用 C++ 编写的程序来解决这个问题。以下是程序的代码:
```c++
#include<iostream>
using namespace std;
int main() {
int n;
cin >> n;
double a = 2, b = 1, sum = 0;
for (int i = 1; i <= n; i++) {
sum += a / b;
double temp = b;
b = a;
a = a + temp;
}
cout << sum << endl;
return 0;
}
```
在这个程序中,我们首先输入一个整数 n,表示我们要求前 n 项的和。然后我们使用两个 double 类型的变量 a 和 b 来存储分数序列中的分子和分母。我们初始化 a = 2,b = 1,表示序列的第一项为 2/1。我们还用一个 double 类型的变量 sum 来存储前 n 项的和,初始化为 0。
然后我们使用一个 for 循环来求分数序列的前 n 项之和。在每一次循环中,我们将 a/b 加入到 sum 中,然后更新 a 和 b 的值,使它们分别为原来的 b 和 a+b。这是因为分数序列的下一项是前两项之和的分数形式,即 a/b + (a+b)/a = (2a+b)/b。
最后,我们输出 sum 的值即可。注意,输出时要加上 endl,以换行。
希望这个程序能够帮到你!
相关问题
一个分数序列:2/1, 3/2, 5/3, 8/5, 13/8, …编写c++程序求出这个序列的前n项之和。
这个分数序列可以表示为前一项的分子与分母之和作为后一项的分子,前一项的分子作为后一项的分母。因此,我们可以使用循环来计算前n项的和。以下是一个C++程序的实现:
```
#include <iostream>
using namespace std;
int main() {
int n;
float sum = 0, a = 2, b = 1, c;
cout << "请输入要计算的项数n:";
cin >> n;
for (int i = 1; i <= n; i++) {
sum += a / b;
c = a + b;
b = a;
a = c;
}
cout << "前" << n << "项之和为:" << sum << endl;
return 0;
}
```
有一个分数序列: 2/1, 3/2,5/3,8/5,13/8,…… 用数组来表示这个序列,编写子函数并用指针做形参实现:求这个序列的前 20 项之和。在主函数中将和显示出来。
这个分数序列实际上是著名的斐波那契数列(Fibonacci sequence)的倒数形式,其中每个分数的分子是前两个分数的和,分母是当前的位置(从1开始)。我们可以创建一个数组来存储分数,然后用递归的方式生成序列。下面是一个C++的例子,展示了如何实现这个功能,使用指针作为参数传递数组:
```cpp
#include <iostream>
#include <vector>
// 定义一个辅助函数,计算下一个分数并添加到数组中
void add_next_fraction(double* arr, int& index, double* &sum) {
if (index >= 20) return; // 如果已经达到20项,停止
double current = (arr[index - 1] + arr[index - 2]) / static_cast<double>(index);
arr[index++] = current; // 更新数组
*sum += current; // 累加总和
}
// 主函数,调用辅助函数求和并输出结果
int main() {
std::vector<double> fractions(21, 0); // 创建一个大小为21的数组,用于存储前20项分数
double sum = 0; // 存储总和
fractions[0] = 1.0; // 初始化第一项为1
fractions[1] = 1.0; // 第二项也为1,因为后续分数都是这两项的比值
// 递归生成并累加分数
for (int i = 2; i < 21; i++) {
add_next_fraction(&fractions[0], i, &sum);
}
std::cout << "Sum of the first 20 fractions in the Fibonacci sequence is: " << sum << std::endl;
return 0;
}
```
在这个程序中,`add_next_fraction` 函数负责递归地生成分数,将它们添加到数组中,并累计总和。在主函数里,我们先初始化前两项为1,然后通过循环调用这个函数直到达到20项为止。最后,我们会打印出这20项分数的总和。
阅读全文