斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和
# 1. 利用for循环动态输入一个动态的数列,如输入5,>>> [0, 1, 1, 2, 3]
num = int(input('>>>:'))
fibonacci = [0, 1]
for i in range(num - 2):
fibonacci.append(fibonacci[-2] + fibonacci[-1])
print(fibonacci)
# 2. 使用函数的方式
def fibonacci(num):
result = [0, 1]
for i in range(num-2):
result.append(result[-2] + result[-1])
return result
print(fibonacci(11))
# 3. 递归版本
def r_fibonacci(num):
"""递归版本 """
if num < 2:
return num
return r_fibonacci(num - 1) + r_fibonacci(num - 2)
# print(r_fibonacci(10))
for i in range(11):
print(r_fibonacci(i))
# 4. lambda版
fibonacci = lambda n: 1 if n <= 2 else fibonacci(n - 1) + fibonacci(n - 2)
print(fibonacci(35))
# 生成器版
class Fib(object):
def __init__(self):
self.prev = 0
self.curr = 1
def __iter__(self):
return self
def __next__(self):
self.curr, self.prev = self.prev + self.curr, self.curr
return self.curr
fib = Fib()
for i in range(10):
print(next(fib))
# yield版
def fib():
prev, curr = 0, 1
while True:
yield curr
curr, prev = prev + curr, curr
f = fib()
for i in range(10):
print(next(f))
End