采用递归、非递归两种方法定义函数计算斐波那契数列,并调用函数输出数列
时间: 2024-10-20 21:15:27 浏览: 36
汇编语言,计算斐波那契数列的前22项,斐波那契数列,分别用两种方法:递归调用,普通循环加法
斐波那契数列是一个经典的数学序列,其中每个数字都是前两个数字的和。这里我将分别介绍如何用递归和非递归的方法来定义计算这个数列。
**递归定义**:
递归法通过直接调用自身来求解,对于第n个斐波那契数F(n),可以表示为:
```python
def fibonacci_recursive(n):
if n <= 0:
return "输入错误"
elif n == 1 or n == 2:
return 1
else:
return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)
```
当调用 `fibonacci_recursive(n)` 时,它会一直递归到基本情况(n=1或n=2),然后逐级返回结果。
**非递归定义**:
非递归法通常使用循环结构,避免了无限递归。例如,可以用栈或数组存储已计算过的值,这样计算效率更高:
```python
def fibonacci_non_recursive(n, fib_cache = [0, 1]):
if n <= 0:
return "输入错误"
if n >= len(fib_cache):
fib_cache.append(fib_cache[-1] + fib_cache[-2])
return fib_cache[n]
# 调用并输出前10个斐波那契数
for i in range(1, 11):
print(fibonacci_non_recursive(i))
```
在这个版本中,我们创建了一个列表`fib_cache`来保存斐波那契数列的前两个元素,并根据需要动态添加新的元素。
阅读全文