有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…用递归函数的方式求出这个数列的前20项之和。
时间: 2024-09-08 09:00:54 浏览: 90
python 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和 (示例)
5星 · 资源好评率100%
这个分数序列实际上是著名的斐波那契数列(Fibonacci sequence)除以它前面一项的逆序形式。斐波那契数列的每一项都是前两项之和,即F(n) = F(n-1) + F(n-2),而给定的序列则是倒置了斐波那契数列的比值。
为了用递归函数计算这个序列的前20项之和,我们可以首先定义一个递归函数来获取斐波那契数列的第n项,然后根据比例关系得到每个分数。递归函数的基本情况是当n等于1或2时,直接返回对应的数值。对于较大的n,我们计算当前项和前两项的乘积,并按照规则转换为分数形式。
递归函数可以表示为:
```python
def fibonacci_ratio(n):
if n == 1 or n == 2:
return (n - 1, 1)
else:
prev, curr = fibonacci_ratio(n - 1)
next_ratio = (curr, prev + curr)
return next_ratio
# 计算前20项之和
fib_sequence = [(prev, 1) for prev, _ in fibonacci_ratio(21)] # 取到第21项作为分母上限
total_sum = sum([x[0] / y for x, y in fib_sequence[:20]])
```
这里我们取了21作为上限,因为20是斐波那契数列的第21项。注意实际计算中,由于浮点精度的问题,可能需要额外处理。
阅读全文