斐波那契數列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610…
規律特點是:n>2,時,後乙個數是前兩個數之和。
版本一
# python3迭代方法實現斐波那契數列
deffibonacci
(n):
list_a =
x =0# x從0開始
y =1for i in
range
(n):
x,y = y,x+y # pyhon用一行巧妙的實現了前兩個數的累加賦值
return list_a
print
(fibonacci(15)
)
版本二
# python3迭代方法實現斐波那契數列
deffibonacci
(n):
list_a =
for i in
range
(n):
if i ==
0or i ==1:
# 注意因為列表索引從0開始,所以這裡也是從0開始1)
else:1
]+list_a[i-2]
)return list_a
print
(fibonacci(15)
)
# python3遞迴方法實現斐波那契數列
deffibonacci
(n):
if n ==
1or n ==2:
return
1return fibonacci(n-1)
+ fibonacci(n-2)
list_a =
for i in
range(1
,16):
# 注意這裡是從1開始,因為定義的函式中n最小為0
)print
(list_a)
對於使用遞迴函式 fib(n) 求解斐波那契數列,則 fib(n) 共呼叫了幾次 fib(m)問題?
這個問題本質上也是乙個斐波那契數列,呼叫的次數為fib(n-m+1)次。如:fib(2)呼叫了fib(2)1次,fib(3)呼叫了fib(2)1次,fib(4)=fib(3)+fib(2)=2,以此類推。
問fib(20)呼叫了fib(2)多少次?
答:fib(19)=4181次,可見遞迴對於函式的重複呼叫非常的嚴重!
斐波那契數列 斐波那契數列python實現
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...
python3 題解(2 斐波那契數列)
問題 1,1,2,3,5,8,13,稱為斐波那契數列。它的每一項都是前兩項的和。程式設計求斐波那契數列的第n項。這個問題不太困難,可以有很多的解法。最容易想到的是 弄乙個陣列,前頭兩個元素裝上1,1,後邊的逐項計算就行。def fib n a 1 1 for i in range n 2 1 a i...
斐波那契數列 python 實現
什麼?找規律找的不錯!其實我想說的是 斐波拉契數列!斐波那契數列 兔子數列.jpg 自從學python,我已經拋棄了計算器。why?因為python比計算器來的快啊!今天要說的斐波那契數列也是,python生成遠比書寫加計算來的快!如果你也想擁有這項牛 zhuang 逼 bi 技能,趕快和我一起學p...