Fibonacci数列,就是那个每一个数都是前两个数之和的序列,看起来应该是这个样子:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...
python 常见的有两种方式来实现Fibonacci数列,分别是递归和迭代。高级且高效的用法还有生成器。
方法1:递归
首先,我们可以用递归的方式来实现。递归可能是最直观的方法,但要注意,对于大数,这种方法效率不是很高。
def fibonacci_recursive(n):
if n <= 0:
return "输入的数应该大于0"
elif n == 1:
return 0
elif n == 2:
return 1
else:
return fibonacci_recursive(n-1) + fibonacci_recursive(n-2)
# 输出前10个Fibonacci数
for i in range(1, 11):
print(fibonacci_recursive(i))
方法2:迭代
相对于递归,迭代方法效率更高,特别是对于大数。
def fibonacci_iterative(n):
a, b = 0, 1
for i in range(n):
a, b = b, a + b
return a
# 输出前10个Fibonacci数
for i in range(1, 11):
print(fibonacci_iterative(i))
方法3:使用生成器
如果你想要一个更优雅的方式,可以使用Python的生成器。这种方法不仅代码简洁,而且内存效率高。参考Python中的yield用法
def fibonacci_generator(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# 输出前10个Fibonacci数
for num in fibonacci_generator(10):
print(num)
输出Fibonacci数列其实并不复杂。你可以根据需要选择最适合你的方法。