本文共 580 字,大约阅读时间需要 1 分钟。
对于青蛙跳楼梯的问题,假设青蛙可以从台阶1和2起跳,那么我们需要找到青蛙跳到n级台阶的不同方法数。
首先,如果目标台阶数n小于等于2,只有一种或两种方法:
对于n大于2的情况,青蛙的跳法数等于去掉1级台阶后的方法数加上去掉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/