第一种递推法
def fib_loop_for(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
def fib_loop_while(n):
a, b = 1, 1
while n > 0:
a, b = b, a + b
n -= 1
return a
for i in range(20):
print(fib_loop_for(i), end=' ')
第二种生成器
def fib_yield_while(max):
a, b = 0, 1
while max > 0:
a, b = b, a+b
max -= 1
yield a
def fib_yield_for(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
yield a
for i in fib_yield_for(10):
print(i, end=' ')
第三种递归法
def fib_recur(n):
assert n >= 0, "n > 0"
if n <= 1:
return n
return fib_recur(n-1) + fib_recur(n-2)
for i in range(1, 20):
print(fib_recur(i), end=' ')