剑指Offer--跳台阶--java

题目描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

算法思想:
经检验为斐波那契数列
斐波那契数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …
如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式::F(n)=F(n-1)+F(n-2)
这个数列从第3项开始,每一项都等于前两项之和。
显然这是一个线性递推数列。

解题思路:
如果输入前两项返回分别为1,2,从第三项开始,可以设置三个变量a,b,c。c存放a,b的和,a存放b的值,b存放c的值。

代码如下:
public class Solution {
public int JumpFloor(int target) {
int a=1;
int b=2;
int c=0;
if(target ==1 || target ==2){
return target;
}else{
for(int n=3;n<=target;n++){
c=a+b;
a=b;
b=c;
}
}
return c;
}
}

运行结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43689040/article/details/87468554
今日推荐