问题

一只青蛙要跳上 n 层高的台阶,一次能跳一级,也可以跳两级,请问这只青蛙有多少种跳上这个 n 层高台阶的方法?

递归

设青蛙跳上 n 级台阶有 f(n)种方法,把这 n 种方法分为两大类,第一种最后一次跳了一级台阶,这 类方法共有 f(n-1)种,第二种最后一次跳了两级台阶,这种方法共有 f(n-2)种,则得出递推公式 f(n)=f(n-1)+f(n-2),显然,f(1)=1,f(2)=2。

其实分析到这里就能发现,青蛙跳台阶的问题实际就是一个斐波那契数列。

这种方法虽然代码简单,但效率低,会超出时间上限,且Python的递归深度只有1000。

def leap_frog(step):if step < 1:return "输入错误"if step == 1 or step == 2:return stepelse:return leap_frog(step-1) + leap_frog(step-2)if __name__ == '__main__':print(leap_frog(5))if __name__ == '__main__':print(leap_frog(5))

循环

这种方法的原理仍然基于上面的公式,但是用循环代替了递归,比上面的代码效率上有较大的提升

def leap_frog(step):if step == 1 or step == 2:return stepa = 1b = 2for i in range(3, step+1):c = a + ba = bb = creturn cif __name__ == '__main__':print(leap_frog(5))

面试题:基于Python的青蛙跳台阶两种解法相关推荐

  1. 基于python实现车辆测速两种的方法

    基于python实现车辆测速两种的方法 姓名:黄镜轩 院系:机电工程学院 班级:车辆工程1班 联系方式:QQ - 3326078070 本文参考了: 案例-使用python实现基于opencv的车辆识 ...

  2. [剑指offer][JAVA]面试题第[10-2]题[青蛙跳台阶问题][动态规划][递归]

    [问题描述][中等] 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.答案需要取模 1e9+7(1000000007),如计算初始结果为:100000 ...

  3. python实现青蛙跳台阶算法

    问题描述: 青蛙每次跳台阶每次只能跳一个台阶或两个台阶,跳到第N个台阶总共有多少种跳法 解决方法: 可以转化为斐波那契数列的方式进行求解,假设要跳N阶台阶,那么第一步有两种跳法: (1)跳一步,后面还 ...

  4. python 实现青蛙跳台阶问题

    剑指offer习题:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 面试时采用递归,面试官说递归的执行速度不行,让我换一个思路, ...

  5. 青蛙跳石头java_青蛙跳台阶(JAVA)与递归问题探究

    青蛙跳台阶JAVA 一只青蛙一次可以跳上一层台阶,也可以跳上两层,求该青蛙跳上n层的台阶总共有多少种跳法(先后次序不同算不同的结果). 思考:可以看出,每次青蛙出脚都会有两种可能,一步或者两步,再次出 ...

  6. python 爱英斯坦台阶问题_关于Python青蛙跳台阶的问题详细讲解

    Python青蛙跳台阶的问题 问题: 一只青蛙要跳上n层高的台阶,一次能跳一阶,也可以跳2阶,请问这只青蛙跳上n层高的台阶有多少种跳法? 背景知识点补充(了解) 斐波那契数列 斐波那契数列(Fibon ...

  7. 剑指offer:面试题10- II. 青蛙跳台阶问题

    题目:青蛙跳台阶问题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:10000 ...

  8. python 青蛙跳台阶问题

    青蛙跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法. 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008 ...

  9. python青蛙跳台阶_Python算法题(一)——青蛙跳台阶

    题目一(青蛙跳台阶): 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 假设只有一级台阶,则总共只有一种跳法: 假设有两级台阶,则总共有两种跳法: ...

最新文章

  1. C/C++从入门到高手所有必备PDF书籍收藏
  2. PL/0语言编译程序分析
  3. 分析解决Java运行时异常
  4. Elasticsearch实现类Google高级检索
  5. node.js——麻将算法(五)胡牌算法的一些优化处理方案(有赖子版)
  6. 稳定币GUSD的优劣势分析
  7. icem网格数和节点数_icem如何查看网格数量
  8. Linux安装以及固定ip
  9. 思科模拟器vlan的划分
  10. 公司管理使用的文档[1]-软件技术服务合同模板
  11. 简单好听的id_简单好听的贴吧id名-网名搜索
  12. P 值(p value)与统计检验
  13. 写一个26字母和0-9数字 不同长度组合的输出
  14. 01.JS基础_前端的语法(4)
  15. NIVC-IPR[IPADDR]
  16. ubuntu中中文名新加卷修改为英文名新加卷
  17. Java开发面试题目,java培训老师第一次讲课
  18. PCIe扫盲——弹性缓存(Elastic Buffer/ CTC Buffer)
  19. 一个完整网页制作的实例积累
  20. 怎么压缩多张图片?如何快速批量压缩图片?

热门文章

  1. Step1帐户登录系统
  2. 传世单机登陆器连接服务器失败!
  3. 联想微型计算机c255r拆机,ThinkServer RD550硬件拆解_ThinkServer RD550 S2609v3 R110i_服务器评测与技术-中关村在线...
  4. python数据保存为txt_python爬取数据保存为txt格式
  5. 华为云数据湖工厂服务DLF
  6. 找程序员做老公的十大好处
  7. Common Lisp 超规范(译文):2. 语法
  8. matlab计算表达式 k,刘卫国 Matlab 例题 1-3章
  9. NSIS脚本检测和安装Adobe Flash Player 插件
  10. 网上青春:小林.COM