乙隻青蛙一次可以跳上1級台階,也可以跳上2級。求該青蛙跳上乙個n級的台階總共有多少種跳法。
fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2)
第二種記憶方法
def memo(func):
cache = {}
def wrap(*args):
if args not in cache:
cache[args] = func(*args)
return cache[args]
return wrap
@memo
def fib(i):
if i < 2:
return 1
return fib(i-1) + fib(i-2)
第三種方法
def fib(n):
a, b = 0, 1
for _ in xrange(n):
a, b = b, a + b
return b
**台階問題
乙隻青蛙一次可以跳上1級台階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。
fib = lambda n: n if n < 2 else 2 * fib(n - 1)
台階 dp 斐波那契
在玩電腦遊戲 lucky luke 時,bom到達了乙個場景,lucky必須爬上乙個由n個台階組成的樓梯。樓梯從下到上編號為1到n。lucky可能會往上爬一步,或者可能一次跳兩步。然而,一些台階被打破了,lucky不能站在上面。一開始,lucky站在第一階 第一階永遠不會破 突然,bom想到了乙個問...
跳台階問題 斐波那契數列
本篇文章有兩道題。對於本題,前提只有 一次 1階或者2階的跳法。a.如果兩種跳法,1階或者2階,那麼假定第一次跳的是一階,那麼剩下的是n 1個台階,跳法是f n 1 b.假定第一次跳的是2階,那麼剩下的是n 2個台階,跳法是f n 2 c.由a b假設可以得出總跳法為 f n f n 1 f n 2...
超級台階 斐波那契類
小明在坐景馳科技研發的無人車到達了目的地。從無人車下來以後,小明看到了乙個長長的樓梯。有乙個n級台階的樓梯,小明一次可以向上跳1步,兩步,甚至是n步,請問小明跳到n級台階有多少種跳法?第一行輸入乙個整數t,代表有t組樣例 t 30 接下來的t行,都用乙個整數n,表示樓梯有n級台階 1 n 30 輸出...