变态跳台阶

题目分析

一只青蛙一次可以跳上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 有几种的和,经过归纳可得 2^{n-1}

代码

public class Solution {
    public int JumpFloorII(int target) {
        return (int)Math.pow(2,target-1);
    }
}

总结

Java中Math类的pow方法

如图可知,代码总是调试失败,结果发现原来是返回类型是double,需要强制类型转换一下。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容