文章目录

  • 题目
  • 方法一:直接递归法
  • 方法二:递归、保存中间值法
  • 方法三:循环法,自底向上累加
  • 参考

题目

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。请问有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数,其范围为:1 ≤ n ≤ 100。

方法一:直接递归法

def func(n):if n == 1 or n == 2:return nreturn func(n - 1) + func(n - 2)
print(func(6))

当n比较大时,这种方法效率很低。

方法二:递归、保存中间值法

把计算过的值存入字典,防止重复计算
如计算f(6),需要求f(5)和f(4),计算f(5)需要求f(4)和f(3),那么f(4)就被重复计算了

adict = {}
def func(n):if n == 1 or n == 2:return nif adict.get(n,None) != None:return adict.get(n,None)else:result = func(n - 1) + func(n - 2)adict[n] = resultreturn result
print(func(6))

这种方法效率会高很多,其实也可以通过循环来实现

方法三:循环法,自底向上累加

def func(n):a, b = 1, 1while n > 1:a, b = b, a + bn -= 1return b
print(func(6))

这种方法的效率也很高

参考

视频:https://www.bilibili.com/video/BV1eg411w7gn?p=5&spm_id_from=pageDriver&vd_source=0467ab39cc5ec5940fee22a0e7797575

文章:https://www.jianshu.com/p/301f7bb7b574

python算法爬楼梯相关推荐

  1. python leetcode 爬楼梯问题 斐波那契数列

    爬楼梯 问题描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. 示例 1: 输入: 2 输出: ...

  2. 经典算法——爬楼梯(解法归纳)(学习笔记)

    问题分析 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢?是引用 当n=1时,只需爬一个台阶,就是一种解法. 当n=2时,可以走两次 ...

  3. Java算法——爬楼梯(LeetCode第70题)

    问题描述 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 示例 分析 题目中给出,上台阶的方式只有两种,一种为一步跨一阶,一种为 ...

  4. 贪心算法爬楼梯问题--LeetCode746《Blind-Stab》

    leetcode网第746号题:题目如下 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始). 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可 ...

  5. 【每日一算法】爬楼梯

    微信改版,加星标不迷路! 每日一算法-爬楼梯 作者:阿广 阅读目录 ? 题目 ? 解析 ? 完整代码 1 题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多 ...

  6. 爬楼梯-斐波那契数列

    每日算法---爬楼梯 题目: 假设你正在爬楼梯.需要 n 阶你才能到达楼顶.每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数.示例 1:输入: 2 输 ...

  7. python爬楼梯_Python3爬楼梯算法示例

    Python3爬楼梯算法示例 本文实例讲述了Python3爬楼梯算法.分享给大家供大家参考,具体如下: 假设你正在爬楼梯.需要 n 步你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同 ...

  8. python爬楼梯问题_爬楼梯算法的数学思路

    爬楼梯算法的数学思路 今日腾讯实习面试,问到一题算法. 爬楼梯问题:一个楼梯一共n个台阶,一次上1或者2个台阶.问,一共多少种解法. 这个问题,当时学递归的时候,我记得做过.但是已经一年半没写过递归和 ...

  9. python侯先生爬楼梯_经典算法题:爬楼梯 ,以斐波那契数列来解题代码案例

    网上这题的解题思路主要有两种:动态规划 斐波那契数列 因为我们用斐波那契数列来解,所以我主要描述方法2. 斐波那契数列 又称 兔子数列, 指得是:1.1.2.3.5.8.13.21.--, 在数学上它 ...

  10. python跳台阶_递推典型算法:猴子爬山,跳台阶,爬楼梯(牛客网)、魔法深渊(快手)----Python、Java...

    递推算法的基本思想是把一个复杂的.庞大的计算过程转化为简单过程的多次重复,其首要问题是得到相邻的数据项之间的关系,即递推关系.以猴子爬山为例. 1.问题的提出 一个顽猴在一座有30级太假的小山上爬山活 ...

最新文章

  1. classpath和读取resources目录下的文件
  2. sae 本地环境 mysql数据库_SAE本地环境与真实环境的差别
  3. supervisor 重启_supervisor_twiddler的使用
  4. Vue源码学习: 关于对Array的数据侦听
  5. win7系统mysql连接不上数据库吗_Win7系统使用数据库时mysql频繁掉线无法连接的两种解决方法...
  6. caffe手写数字分类-学习曲线
  7. NoSQL数据库简介
  8. 自己写段代码批量修改照片的Exif数据
  9. 一文带你彻底了解电子灌封(灌胶)工艺技术
  10. 怎么在线把图片转成PDF?几个步骤轻松转换
  11. 详解批量梯度下降法(BGD)、随机梯度下降法(SGD)和小批量梯度下降法(MBGD)
  12. 第十三届——蓝桥杯嵌入式第二场
  13. LINUX嵌入式系统开发平台选择
  14. Python基础语法视频教程全39集,历时1个多月终于更新完毕,需要的拿走!
  15. 人死后竟然会知道自己死了?
  16. 负重阳光城之悬崖边的股价|一点财经
  17. mysql防注入插件_MyBB HM_My Country Flags 插件'cnam'参数SQL注入漏洞
  18. 京东试用python全自动申请程序
  19. C语言课程设计——N-S图
  20. Python调用有道语音API实现文字转音频

热门文章

  1. Virtualbox虚拟机Ubuntu联网
  2. 智能合约漏洞检测工具mythril使用
  3. linux su root 限制,Linux禁止普通用户su至root
  4. 使用laravel框架创建todos
  5. (美国)数字设备公司 DEC
  6. 我的超长综合面经 ---- 北京大学 黄晔
  7. 2019第四次新生周赛——YZJ的牛肉干
  8. 利用Python爬虫建立自己的磁力搜索引擎
  9. android图片添加文字,android图片上添加文字
  10. POI读取word文档后插入内容以及设置标题样式