# -*- 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個裴波那契數列的數第二種 用類求裴...