今天來學(xué)一下Python之禪和他朋友們的第四題
題目

image
數(shù)列從0和1開始,之后的斐波那契系數(shù)由之前的兩數(shù)相加而得出,例如斐波那契數(shù)列的前10個(gè)數(shù)是:0, 1, 1, 2, 3, 5, 8, 13, 21, 34。用 Python 實(shí)現(xiàn)斐波那契數(shù)列常見的寫法有三種,各算法的執(zhí)行效率也有很大差別。
'''
用Python實(shí)現(xiàn)斐波那契數(shù)列(Fibonacci sequence)
除第一個(gè)和第二個(gè)數(shù)外,任意一個(gè)數(shù)都可由前兩個(gè)數(shù)相加得到:
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...
'''
def fib(max):
#n=0, a=0, b=1
n, a, b = 0, 0, 1
#條件滿足 n < max 就循環(huán),n > max 就停止
while n < max:
print(b)
#不等于a=b, b=a + b
a, b = b, a + b
n = n + 1
return 'done'
#調(diào)用函數(shù)
f= fib(9)
print(f)
> 1 1 2 3 5 8 13 21 34 done
這里再來看下Python之禪遞推法講解
def fib_loop(n):
a, b = 0, 1
for i in range(n):
a, b = b, a + b
return a
for i in range(20):
print(fib_loop(i), end=" ")