python實現斐波那契數列

2021-10-01 08:36:53 字數 2610 閱讀 3312

1.遞迴方式

寫法最簡潔,但是效率最低,會出現大量的重複計算,時間複雜度o(1.618^n),而且最深度1000

def

fib_sequence

(num)

:if num ==

1or num ==2:

return

1else

:return fib_sequence(num-2)

+fib_sequence(num-1)

user_input =

input

('請輸入乙個數字'

)print

('根據遞迴方式生成的結果為'

, fib_sequence(

int(user_input)

))

2.for迴圈

迭代主要思想為: 迴圈**中參與運算的變數同時是儲存結果的變數,最常見的迭代為遍歷列表

遞推法,就是遞增法,時間複雜度是 o(n),呈線性增長,如果資料量巨大,速度會越拖越慢

def

fib_sequence2

(num)

: a, b =0,

1for i in

range

(num-1)

: a, b = b, a+b

return b

user_input2 =

input

('請輸入乙個數字'

)print

('根據for迴圈後生成的結果為'

, fib_sequence2(

int(user_input2)

))

#while迴圈

def

fib_sequence3

(num)

: a, b, i =0,

1,0while

(i < num-1)

: a, b = b, a+b

i +=

1return b

user_input3 =

input

('請輸入乙個數字'

)print

('根據while迴圈後生成的結果為'

, fib_sequence3(

int(user_input3)

))

3.生成器

def

generator_fib

(num)

: a, b =0,

1while num >0:

a, b = b, a + b

num -=

1yield a

defgenerator_

(f):

while

true

:try

: x =

next

(f)except stopiteration as e:

print

('生成器最後的返回值是:'

, x)

break

f = generator_fib(8)

generator_(f)

user_input4 =

input

('請輸入乙個數字'

)print

(generator_fib(

int(user_input4)

))

4.矩陣

因為冪運算可以使用二分加速,所以矩陣法的時間複雜度為 o(log n)

用科學計算包numpy來實現矩陣法 o(log n)

import numpy

deffib_matrix

(n):

res =

pow(

(numpy.matrix([[

1,1]

,[1,

0]])

), n)

* numpy.matrix([[

1],[

0]])

return res[0]

[0]for i in

range(10

):print

(int

(fib_matrix(i)

), end=

' ')

#2 使用矩陣計算斐波那契數列

def

fibonacci_matrix_tool

(n):

matrix = numpy.matrix(

"1 1;1 0"

)# 返回是matrix型別

return

pow(matrix, n)

# pow函式速度快於 使用雙星好 **

deffibonacci_matrix

(n):

result_list =

for i in

range(0

, n):)

[0][

0])return result_list

#呼叫

fibonacci_matrix(

10)

斐波那契數列 斐波那契數列python實現

斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...

斐波那契數列 python 實現

什麼?找規律找的不錯!其實我想說的是 斐波拉契數列!斐波那契數列 兔子數列.jpg 自從學python,我已經拋棄了計算器。why?因為python比計算器來的快啊!今天要說的斐波那契數列也是,python生成遠比書寫加計算來的快!如果你也想擁有這項牛 zhuang 逼 bi 技能,趕快和我一起學p...

python實現斐波那契數列

方法二 構造遞迴函式def recur fibo n 斐波那契數列指的是這樣乙個數列 0,1,1,2,3,5,8,13,特別指出 第0項是0,第1項是第乙個1。從第三項開始,每一項都等於前兩項之和。核心 fibo 0 1 for ii in range 2 times 2 fibo ii 1 加入了...