问题描述:有一座高度为n级的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶,求出一共有多少种走法。
分析:因为每1步只能走1级或者2级,所以走到第n级的前一步有且只有两种情况,第一种情况是从第n - 1级走1级,第二种情况是从第n - 2级走2级。由此我们就可以得到此问题的递归公式:
F(1) = 1;
F(2) = 2;
F(n) = F(n - 1) + F(n - 2);
代码
package suanFa;
public class PaLouti {
public static int getNum(int n) {
if(n <= 2) return n;
int a = 1;//只有1级台阶的情况
int b = 2;//有2级台阶的情况
int tmp = 0;//辅助变量
for(int i = 3;i <= n;i++){
tmp = a + b;
a = b;
b = tmp;
}
return tmp;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getNum(9));
}
}
运行结果
55