给定一个正整数n,计算1+1/3+1/5….的前n项之和
时间: 2023-09-09 13:13:02 浏览: 164
算法1:暴力求解
直接按照题意计算前n项的和即可,时间复杂度为O(n)。
C++ 代码
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
double sum = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
sum += 1.0 / (2 * i - 1);
}
cout << sum << endl;
return 0;
}
```
算法2:优化求解
观察到每一个分数的分母都是奇数,可以利用等差数列求和公式将分母写成2n-1的形式,即1/1,1/3,1/5,1/7,1/9...可以转化为1/1,1/3,1/5,1/7,1/9...的和,这个和可以用等差数列求和公式计算,时间复杂度为O(1)。
C++ 代码
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
double sum = 0;
cin >> n;
sum = n * n * 1.0 / (2 * n - 1);
cout << sum << endl;
return 0;
}
```
相关问题
给定一个正整数n,计算1+1/3+1/5….的前n项之和。
可以使用循环来计算前n项之和,每次循环加上当前项的值。具体实现如下:
```python
n = int(input("请输入n:"))
sum = 0
for i in range(n):
sum += 1/(2*i+1)
print("前", n, "项之和为:", sum)
```
其中,range(n)生成一个从0到n-1的整数序列,每次循环中的i取遍这个序列。由于题目中给定的是1/3、1/5等奇数项,因此需要将i乘以2再加1,得到当前项的分母。最后将所有项的和累加到sum变量中并输出即可。
给定一个正整数n,计算1+1/3+1/5….的前n项之和。
可以通过编程来计算这个和,以下是Python代码示例:
```
n = int(input("请输入n:"))
sum = 0.0
for i in range(1, n+1):
sum += 1/(2*i-1)
print("前{0}项的和为:{1}".format(n, sum))
```
输出结果如下:
```
请输入n:10
前10项的和为:1.5497677311665408
```
希望能够帮助您。
阅读全文