输入整数n,求前n项之和s=1-1/2+1/3-1/4+....+1/n
时间: 2023-09-30 16:05:41 浏览: 79
算法1:
使用循环,对每一项进行求和。
时间复杂度:$O(n)$
C++ 代码
```cpp
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
double sum = 0;
for (int i = 1; i <= n; i++)
{
if (i % 2 == 1)
sum += 1.0 / i;
else
sum -= 1.0 / i;
}
cout << sum << endl;
return 0;
}
```
Python 代码
```python
n = int(input())
sum = 0
for i in range(1, n+1):
if i % 2 == 1:
sum += 1 / i
else:
sum -= 1 / i
print(sum)
```
算法2:
使用递归,对前n项进行逐项求和。
时间复杂度:$O(n)$
C++ 代码
```cpp
#include <iostream>
using namespace std;
double sum(int n)
{
if (n == 1)
return 1.0;
else if (n % 2 == 1)
return sum(n-1) + 1.0 / n;
else
return sum(n-1) - 1.0 / n;
}
int main()
{
int n;
cin >> n;
cout << sum(n) << endl;
return 0;
}
```
Python 代码
```python
def sum(n):
if n == 1:
return 1
elif n % 2 == 1:
return sum(n-1) + 1 / n
else:
return sum(n-1) - 1 / n
n = int(input())
print(sum(n))
```