剑指offer第8题:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
理解:
本题是斐波那契数列的变形,可以参考斐波那契数列计算的试题。只需要将台阶的级数对应斐波那契数列的第几个数对应对就好。第一阶台阶对应的是斐波那契的第二项1,第二阶台阶对应数列的第三项2。
public class Solution {
public int JumpFloor(int target) {
//这是一道斐波那契数列的变形题
//创建前两项和result
//跳上第一个台阶有一种方法,跳上第二个有两种,第三个有三种,第四个有五种
//显然是斐波那契数列,而且第一节台阶对应标准斐波那契数列的第2项,第二级台阶2种方法,对应第3项
int one = 1;
int two = 1;
int result = 0;
if(target == 0 ||target == 1){
return one;
}
else{
for(int i = 2; i <= target; i++){
result = one + two;
one = two;
two = result;
}
}
return result;
}
}
知识点:
- 斐波那契数列
- 斐波那契数列应用