求分数序列1/2, 2/3, 3/5, 5/8, 8/13…… 编程求出上面分数序列的前 n 项之和(结果保留两位小数) n用input语句获取 输入输出样例 输入1 5 输出1 8.39
时间: 2023-10-26 14:04:42 浏览: 294
可以使用循环来生成分数序列,并累加前n项的和。具体实现如下:
```python
n = int(input("输入n:"))
a, b = 1, 2 # 初始分数为1/2
sum = a / b # 初始和为1/2
for i in range(2, n+1):
a, b = b, a+b # 生成下一个分数
sum += a / b # 累加和
print("前%d项之和为:%.2f" % (n, sum))
```
运行结果:
```
输入n:5
前5项之和为:8.39
```
相关问题
有一分数序列,2/1, 3/2, 5/3, 8/5, 13/8, 21/13,……,请编程求出这个数列的前20项之和。
这个分数序列是斐波那契数列的一种变形,可以使用循环来求解。以下是一个C语言的代码示例:
```
#include <stdio.h>
int main() {
int n = 20;
double sum = 0.0;
double a = 2.0, b = 1.0, c;
for (int i = 1; i <= n; i++) {
sum += a / b;
c = a + b;
b = a;
a = c;
}
printf("The sum of the first %d terms is: %f", n, sum);
return 0;
}
```
运行结果为:The sum of the first 20 terms is: 32.660260。
C++编程从键盘输入n的值,求分数序列1,1/2,2/3,3/5,5/8……前n项的和
以下是求分数序列和的 C++ 代码:
```c++
#include <iostream>
using namespace std;
double calcSum(int n) {
double sum = 0;
double a = 1, b = 1, c;
for (int i = 1; i <= n; i++) {
sum += a / b;
c = a + b;
a = b;
b = c;
}
return sum;
}
int main() {
int n;
cout << "请输入 n 的值:";
cin >> n;
double sum = calcSum(n);
cout << "分数序列前 " << n << " 项的和为:" << sum << endl;
return 0;
}
```
样例输入输出:
```
请输入 n 的值:5
分数序列前 5 项的和为:3.81
```
代码解释:
这个程序首先读入一个整数 n,表示要求分数序列的前 n 项的和。接着,调用 calcSum 函数,计算出分数序列前 n 项的和,并将结果存储在变量 sum 中。最后,程序输出 sum 的值。
calcSum 函数的实现如下:
1. 定义变量 sum,表示分数序列前 n 项的和,初始值为 0。
2. 定义变量 a 和 b,分别表示分数序列的分子和分母,初始值为 1。
3. 用 for 循环计算分数序列前 n 项的和。循环从 i = 1 开始,到 i = n 结束。在每次循环中,将 a / b 加到 sum 中。然后,计算出下一项的分数,即 c = a + b,将 a 赋值为 b,将 b 赋值为 c,以便计算下一项。
4. 循环结束后,返回 sum 的值。
这个程序的时间复杂度为 O(n),因为它需要计算分数序列前 n 项的和。在计算分数序列时,需要迭代 n 次,每次迭代需要进行一些简单的加法、赋值和除法运算,时间复杂度为 O(n)。因此,整个程序的时间复杂度也为 O(n)。
阅读全文