如何用 Python 编程实现计算 1+1/2+1/3+...+1/n 的递归函数以及非递归方法?
时间: 2024-10-21 13:08:45 浏览: 113
在 Python 中,可以使用递归和非递归的方式来计算序列 1 + 1/2 + 1/3 + ... + 1/n 的和。
**递归方法:**
递归实现通常涉及到基本情况(n=1)和递归情况(n>1)。在这种情况下,我们可以将问题分解为较小的部分,然后将它们相加。
```python
def sum_recursively(n):
if n == 1: # 基本情况
return 1
else:
return 1 / n + sum_recursively(n - 1) # 递归情况
# 调用函数并传入你想计算到的项数
result = sum_recursively(5)
print(result)
```
**非递归方法(等差数列求和):**
非递归方法更高效,因为它是通过循环逐项累加得出总和。这通常是利用数学公式直接计算前n项和,例如对于正序有理数序列,可以用高斯求和公式。
```python
def sum_iteratively(n):
total_sum = 0
for i in range(1, n+1):
total_sum += 1/i
return total_sum
# 计算同样到第五项
result = sum_iteratively(5)
print(result)
```
阅读全文