写在前面:
为了增长一下自己的数据结构能力,也为了面试准备,准备将剑指Offer做一下,并与各位分享,希望各位可以对代码以及思路提提建议,欢迎志同道合者,谢谢。
题目
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
思路:
找一下规律
1级 只有一种可能
2级有两种可能
3级 因为他可以跳两级,也可以跳一级,三级的台阶,不是从1级上来就是从2级上来,我们只需要将一级的可能加上二级的可能就是三级的跳法,其他的也是一样,这也是斐波那契数列
代码实现
package com.itzmn.offer;
/**
* @Auther: 张梦楠
* @Date: 2018/7/28 11:36
* 简书:https://www.jianshu.com/u/d611be10d1a6
* 码云:https://gitee.com/zhangqiye
* @Description:
* 1 1 1 2 2
*
* 3级台阶
* 可以跳一级,2级,几种跳发
* 3个1 1
* 1个2 1个1 2
*
* 4级
* 4个1 1
* 2个1 1个2 3
* 2个2 1
*
* 5级
*
* 5个1 1
* 1个2 3个1
* 2个2 1个1 3
*
*
*
*
*/
public class Offer8 {
public static void main(String[] args) {
int i = new Offer8().JumpFloor(5);
System.out.println(i);
}
public int JumpFloor(int target) {
if (target <= 3){
return target ;
}
return JumpFloor(target-1)+JumpFloor(target-2);
}
}
希望大家可以多多指点,优化一下,
QQ群:552113611
网友评论