题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路:
- 对于两级台阶,可以有两种跳法,即1+1和2
- 对于一级台阶,有一种跳法
- 对于n级台阶,跳法有f(n) = f(n-1) + f(n-2),n >= 3
解法一:
/**
* @author: hyl
* @date: 2019/08/15
**/
public class Que7 {
public int JumpFloor(int target) {
return jump(target);
}
private int jump(int i) {
if (i == 1 || i == 2){
return i;
}
return jump(i - 1) + jump(i - 2);
}
}
解法二:
/**
* @author: hyl
* @date: 2019/08/15
**/
public class Que7 {
public int Fibonacci(int n) {
if (n <= 0){
return 0;
}
int[] fib = new int[41];
fib[0] = 0;
fib[1] = 1;
fib[2] = 1;
for (int i = 3; i <= 40; i++) {
fib[i] = fib[i-1] + fib[i - 2];
}
return fib[n];
}
}
代码地址:
https://github.com/Han-YLun/jianzhiOffer/blob/master/Solution/src/Que7.java
文章为阿伦原创,如果文章有错的地方欢迎指正,大家互相交流。