Fibonacci数列中,类似于与这个数列提出了一个新的数列满足: 1、当i>4时, 2、当i<=3时, 设计一个递归(或递推)函数,计算它的值,并指出它的时间复杂度。
时间: 2024-02-22 20:57:05 浏览: 54
DiGuiDemo.zip_斐波那契_斐波那契数列_递归_递归求阶乘
根据题意,我们可以将这个新数列表示为:
- 当 $i \leq 3$ 时,$f_i = 1$;
- 当 $i > 4$ 时,$f_i = f_{i-1} + f_{i-4}$。
这个数列就是以 $1, 1, 1$ 开头,后面每个数都是前四个数的和的数列。我们可以使用递推的方式来计算这个数列。时间复杂度为 $O(n)$。
递推的代码如下:
```python
def fibonacci(n):
if n <= 3:
return 1
f1, f2, f3, f4 = 1, 1, 1, 1
for i in range(4, n+1):
fi = f1 + f4
f1, f2, f3, f4 = f2, f3, f4, fi
return fi
```
其中,我们用 `f1, f2, f3, f4` 分别表示数列中的 $f_{i-3}, f_{i-2}, f_{i-1}, f_i$,在每次循环中,我们将它们依次右移,并计算新的 $f_i$。
阅读全文