/**
* 动态规划,时间复杂度O(n)空间复杂度O(1)
* 求得斐波那契数列的第n项的值。前两项为1,2
* n阶的梯子,每步只能上一阶或两阶,求有多少中方法走完n阶
*/
public class Fbnx {
public static void main(String[] args) {
int n=5;//第n个数(从1开始)
Long res=fbnx(n);
System.out.println(res);
}
private static Long fbnx(int n) {
n--;//使n变成数组的下标
Long [] arr=new Long[]{1l,2l};
if(n<2){
return arr[n];
}
Long res=0l;
for (int i = 2; i <= n; i++) {
//保留之前的两个值用以求第三位的数
res=arr[0]+arr[1];
arr[0]=arr[1];
arr[1]=res;
}
return res;
}
}