zoukankan      html  css  js  c++  java
  • 小青蛙跳台阶

    小青蛙跳台阶问题

    一致青蛙一次可以跳上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))
    
    
  • 相关阅读:
    悬浮按钮
    C语言学习笔记
    python3之环境搭建以及基础语法
    设计模式之单例模式
    浅谈vuex
    用位运算替代js中的常见操作
    浅析Symbol
    egg.js源码解析之render()
    js的事件循环机制和任务队列
    浅谈js异步
  • 原文地址:https://www.cnblogs.com/xjmlove/p/10505466.html
Copyright © 2011-2022 走看看