演算法題 001 斐波那契數列

2021-10-20 18:30:30 字數 917 閱讀 2295

斐波那契數列的python版本:

# -*-coding:utf-8-*-

'''斐波那契數列實現

'''import functools

from typing import generator

# 方法一:使用遞迴(需要快取)

@functools.lru_cache(maxsize=none)

def feibo(num:int) ->int:

if num < 2:

return num

return feibo(num-1) + feibo(num-2)

def feibo2(num:int)->int:

first = 0

sencond = 1

for i in range(1,num):

first,sencond = sencond,first+sencond

return sencond

# 方法三:使用生成器

def feibo3(num:int)->generator[int,none,none]:

yield 0 # 遍歷第乙個值返回

if num > 0:

yield 1 # 遍歷第二個值返回

first = 0

next = 1

for i in range(1,num):

first,next = next,first+next

yield next

if __name__ == '__main__':

print(feibo(50))

print(feibo2(50))

for i in feibo3(10):

print(i)

斐波那契數列衍生演算法題

假設你正在爬樓梯。需要 n 階你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。首先我們最快想到的實現方式就是遞迴 f 1 1 f 2 2 f n f n 1 f n 2 複製 func climbstairs n int int i...

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

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

迴圈斐波那契數列 斐波那契數列應用

什麼是斐波那契數列 斐波那契數列指的是這樣乙個數列 1,1,2,3,5,8,13,21,34,55,89,144 這個數列從第3項開始,每一項都等於前兩項之和 台階問題 有一段樓梯有10級台階,規定每一步只能跨一級或兩級,要登上第10級台階有幾種不同的走法?這就是乙個斐波那契數列 登上第一級台階有一...