分别用非递归和递归计算Lucas数列第n项 Lucas数列:1, 3, 4, 7, 11, 18, 29, 47, 76, 123..
时间: 2023-10-02 14:11:28 浏览: 100
组合数学fibonacci数列递归非递归求解
非递归计算Lucas数列第n项的代码如下:
```python
def lucas_iter(n):
if n == 0:
return 2
elif n == 1:
return 1
else:
a, b = 2, 1
for i in range(2, n+1):
c = a + b
a, b = b, c
return c
```
递归计算Lucas数列第n项的代码如下:
```python
def lucas_recur(n):
if n == 0:
return 2
elif n == 1:
return 1
else:
return lucas_recur(n-1) + lucas_recur(n-2)
```
其中,lucas_iter是非递归实现,lucas_recur是递归实现。两者的时间复杂度都是O(n),但是递归实现需要额外的空间来保存函数调用栈。在n较大时,递归实现可能会导致栈溢出的问题。
阅读全文