博客
关于我
跳台阶
阅读量:579 次
发布时间:2019-03-11

本文共 580 字,大约阅读时间需要 1 分钟。

对于青蛙跳楼梯的问题,假设青蛙可以从台阶1和2起跳,那么我们需要找到青蛙跳到n级台阶的不同方法数。

首先,如果目标台阶数n小于等于2,只有一种或两种方法:

  • 如果n=1,只能有一种方法:1步。
  • 如果n=2,可以两种方法:1+1步,或者2步。

对于n大于2的情况,青蛙的跳法数等于去掉1级台阶后的方法数加上去掉2级台阶后的方法数。即:

  • JumpFloor(n) = JumpFloor(n-1) + JumpFloor(n-2)

这是因为青蛙在到达n级台阶之前,可以选择从n-1级跳过来(此时方法数为JumpFloor(n-1))或者从n-2级跳过来(此时方法数为JumpFloor(n-2))。

通过这个递归关系,可得JumpFloor(n)实际上是斐波那契数列的第n+1项。

public class Solution {    public int JumpFloor(int target) {        if (target <= 2) {            return target;        }        return JumpFloor(target - 1) + JumpFloor(target - 2);    }}

需要注意的是,递归会导致重复计算,较优的做法是使用记忆化技术存储已计算过的结果,避免重复计算,提高效率。

转载地址:http://tistz.baihongyu.com/

你可能感兴趣的文章
李笑来必读书籍整理
查看>>
http头部 Expect
查看>>
Hadoop(十六)之使用Combiner优化MapReduce
查看>>
《机器学习Python实现_10_06_集成学习_boosting_gbdt分类实现》
查看>>
CoreCLR源码探索(八) JIT的工作原理(详解篇)
查看>>
IOS开发Swift笔记16-错误处理
查看>>
flume使用中的一些常见错误解决办法 (地址已经使用)
查看>>
andriod 开发错误记录
查看>>
C语言编译错误列表
查看>>
看明白这两种情况,才敢说自己懂跨链! | 喵懂区块链24期
查看>>
张一鸣:创业7年,我经历的5件事
查看>>
git拉取远程指定分支代码
查看>>
CentOS5 Linux编译PHP 报 mysql configure failed 错误解决办法
查看>>
《web安全入门》(四)前端开发基础Javascript
查看>>
pycharm新建文件夹时新建python package和新建directory有什么区别?
查看>>
python中列表 元组 字典 集合的区别
查看>>
python struct 官方文档
查看>>
Android DEX加固方案与原理
查看>>
Android Retrofit2.0 上传单张图片和多张图片
查看>>
iOS_Runtime3_动态添加方法
查看>>