python 演算法 斐波那契數列

2021-10-05 11:29:22 字數 1808 閱讀 1502

# -*- coding=utf-8 -*-

# software: 演算法學習

# datetime:2020/4/26 9:03 上午

"""斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家列昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,

故又稱為「兔子數列」,指的是這樣乙個數列:1、1、2、3、5、8、13、21、34、……在數學上,

斐波那契數列以如下被以遞推的方法定義:f(1)=1,f(2)=1, f(n)=f(n - 1)+f(n - 2)(n ≥ 3,n ∈ n*)

"""import time

deftimer

(func)

:def

warpper

(*args,

**kwargs)

: start_time = time.time(

) ret = func(

*args,

**kwargs)

print

(f"耗時:"

)return ret

return warpper

@timer

deffibonacci_sequence

(n):

""" 使用迴圈生成

:param n: 生成數列的個數, n >= 3

:return:

"""if n <3:

raise exception(

"輸入引數不能小於3"

) n1 =

1 n2 =

1 l =

[n1, n2]

for i in

range

(n -2)

: n = n1 + n2

n1 = n2

n2 = n

print

(l)return l

deffibonacci_sequence_recursive

(n):

""" 遞迴

:param n:

:return:

"""if n ==0:

return

0elif n ==1:

return

1else

:return fibonacci_sequence_recursive(n -1)

+ fibonacci_sequence_recursive(n -2)

@timer

deffibonacci_sequence_recursive1

(n):

""" 推導式

:param n:

:return:

"""l =

a, b =0,

1for i in

range

(n):

a, b = b, a + b

print

(l)return a

@timer

defrecursive

(n):

l1 =

for i in

range(1

, n +1)

:)print

(l1)

if __name__ ==

'__main__'

: n =

20 fibonacci_sequence(n)

recursive(n)

fibonacci_sequence_recursive1(n)

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

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

Python演算法 斐波那契數列

典型的遞迴演算法 快速排序會用到 先做個鋪墊 斐波那契數列即著名的兔子數列 1 1 2 3 5 8 13 21 34 數列特點 該數列從第三項開始,每個數的值為其前兩個數之和,用python實現起來很簡單 定義fibonacci數列如下 非遞迴方法的函式實現 def fibs num result ...

Python斐波那契數列演算法

第一種 函式求裴波那契數列 def func num if n 1 or n 2 如果n等於1或者2 return 1 返回1 else 否則 return func n 1 func n 2 返回函式n 1加上函式n 2的值 print func 12 輸出第12個裴波那契數列的數第二種 用類求裴...