小青蛙跳臺階

小青蛙跳臺階問題

一致青蛙一次能夠跳上1級臺階,也能夠跳上2級臺階,求該青蛙跳上一個n級的臺階有多少中跳法?

假設,一級臺階,有f(1)種方法,二級臺階有f(2)種方法,以此類推,跳到n級臺階有f(n)種方法。
能夠看出,f(1) = 1,f(2) = 2。那麼,n級臺階就有兩種狀況。python

  • 跳1級,接下來是f(n - 1)code

  • 跳2級,接下來是f(n - 2)class

總數就是f(n) = f(n - 1) + f(n - 2)方法

def memo(func):
    cache = {}

    def inner(*args, **kwargs):
        if args not in cache:
            cache[args] = func(*args, **kwargs)
        return cache[args]

    return inner


@memo
def fbi(n):
    if n <= 2:
        return 1
    return fbi(n - 1) + fbi(n - 2)


print(fbi(100))

一致青蛙一次能夠跳上1級臺階,也能夠跳上2級臺階,也能夠一次跳n級臺階,求該青蛙跳上一個n級的臺階有多少中跳法?

def memo(func):
    cache = {}

    def inner(*args, **kwargs):
        if args not in cache:
            cache[args] = func(*args, **kwargs)
        return cache[args]

    return inner


@memo
def fbi(n):
    if n <= 2:
        return 1
    return 2 * fbi(n - 1)


print(fbi(100))
相關文章
相關標籤/搜索