假設你正在爬樓梯,須要n階你才能到達樓頂,n是正整數
每次你能夠爬1或2個臺階,有多少種不一樣的方法能夠爬到樓頂函數
當n=1時,steps=1
當n=2時,1+1,2 steps=2
當n=3時,1+1+1,1+2,2+1 steps=3
當n=4時,1+1+1+1,1+2+1,1+1+2,2+1+1,2+2 steps=5
當n=5時,1+1+1+1+1,1+1+1+2,1+1+2+1,1+2+1+1,2+1+1+1,2+2+1,2+1+2,1+2+2 steps=8
...
通過簡單推算,發現是一個斐波那契數列code
n = 100 # 開闢一個0列表,因爲索引從0開始,第100項索引爲101,列表長度爲101 # 另外當n=1時,0列表長度爲2,steps[2]將超出索引範圍,因此再加一 # t = [0] * (n+1) steps = [0 for _ in range(n+2)] steps[1] = 1 steps[2] = 2 for i in range(3, n+1): steps[i] = steps[i-1] + steps[i-2] print(steps[n]) # 573147844013817084101
使用函數封裝一下索引
def climbStairs(n): steps = [0 for _ in range(n+2)] steps[1] = 1 steps[2] = 2 for i in range(3, n+1): steps[i] = steps[i-1] + steps[i-2] return steps[n] print(climbStairs(100)) # 573147844013817084101
參考:
https://leetcode-cn.com/problems/climbing-stairs/description/ip