牛客网剑指offer在线练习题目
跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
解题思路
这是一道斐波那契数列的应用题。
设跳上一个n级的台阶总共有w(n)种跳法,由于青蛙一次只能跳1级台阶或者2级台阶,那么要跳上一个n级的台阶,只可能由第n-1级的台阶跳1级或者由第n-2级台阶跳2级才能跳上n级台阶。设跳上一个n-1级的台阶有w(n-1)种跳法,跳上一个n-2级的台阶有w(n-2)种跳法,显然有:
w(n) = w(n-1) + w(n-2)
由题意可知w(1) = 1,w(2) = 2
代码
public class Solution {
static int[] fib = new int[10010];//变形的斐波那契数列
public static void initFib() {
fib[0] = 0;
fib[1] = 1;
fib[2] = 2;
for (int i = 3; i < fib.length; i++) {
fib[i] = fib[i-1] + fib[i-2];
}
}
public int JumpFloor(int target) {
Solution.initFib();
return Solution.fib[target];
}
}