小青蛙跳台阶

小青蛙跳台阶问题

一致青蛙一次可以跳上1级台阶,也可以跳上2级台阶,求该青蛙跳上一个n级的台阶有多少中跳法?

假设,一级台阶,有f(1)种方法,二级台阶有f(2)种方法,以此类推,跳到n级台阶有f(n)种方法。
可以看出,f(1) = 1,f(2) = 2。那么,n级台阶就有两种情况。

  • 跳1级,接下来是f(n - 1)

  • 跳2级,接下来是f(n - 2)

总数就是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))

posted @ 2019-03-10 15:31  爬呀爬Xjm  阅读(561)  评论(0编辑  收藏  举报