题目分析
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
分析
本质上是斐波那契数列的变种,普通跳台阶是一步与两步,问题规模缩小到分成最后要跳到第 n 阶可以跳两次或者一次去求解,所以,在普通跳台阶,设置两个临时变量存下跳一次或者两次时,前面会有多少种可能的结果
这里用同一个套路来分析一下
若楼梯阶级 n = 3
* 跳 3 步到 3:没有剩下步数没跳的,只有这样一种跳法
* 跳 2 步到 3:剩下的是第一步没跳,起始跳到第一步只有一种
* 跳 1 步到 3:剩下的是第二步没跳,起始跳到第二步有两种
求得,n = 3 时,有 4 种跳法
若楼梯阶级 n = 4
* 跳 4 步到 4:没有剩下步数没跳的,只有这样一种跳法
* 跳 3 步到 4:剩下的是第一步没跳,起始跳到第一步只有一种
* 跳 2 步到 4:剩下的是第二步没跳,起始跳到第二步只有两种
* 跳 1 步到 4:剩下的是第三步没跳,起始跳到第三步有四种
求得,n = 4 时,有 8 种跳法
若楼梯阶级 n = n
* 跳 x 步到 n 有几种的和,经过归纳可得
代码
public class Solution {
public int JumpFloorII(int target) {
return (int)Math.pow(2,target-1);
}
}
总结
如图可知,代码总是调试失败,结果发现原来是返回类型是double,需要强制类型转换一下。