采用动态规划算法计算。
package likou;
/*
* 爬楼梯
* 假设需要 n 阶才能到达楼顶,每次可以爬1阶或2阶楼梯
* 总共有多少方式可以爬到楼顶,即f(n) = f(n-1) + f(n-2)
* f(n-1)表示再爬一步就可到达楼顶
* f(n-2)表示再爬两步就可以到达楼顶
*/
public class Demo70 {
/*
* 初始阶段
* f(0) = 0;
* f(1) = 1;
* f(2) = 2;
* f(3) = f(1) + f(2) = 1+2 = 3
*/
public int climbStairs(int n) {
if(n<=2) {
return n;
}
int f1 = 1;
int f2 = 2;
int value = 0;
for(int i=3;i<=n;i++) {
value = f1+f2;
f1 = f2;
f2 = value;
}
return value;
}
public static void main(String args[]) {
Demo70 demo = new Demo70();
System.out.println(demo.climbStairs(2));
}
}