问题:有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?
分析:只有一个台阶的话,只有1种走法,2级台阶的话,可以一步一个台阶走,也可以一步2个台阶走,共有2种走法。当台阶数大于等于3之后,可以这么分析:如果最后一步走一个台阶,那么就是n-1个台阶的走法的种类,如果最后一步走两个台阶,那么就是n-2个台阶的走法的种类,所以n个台阶的走法种类就是n-1个台阶和n-2个台阶的走法的总和。因此,这是一个递归函数。
代码如下:
public class step {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入台阶数:");
int count = sc.nextInt();
System.out.println("一共有" + step.fstep(count) + "种走法");
}
public static int fstep (int n) {
if(n==1) {
return 1;
}
if(n==2) {
return 2;
}
if(n>2) {
return fstep(n-2)+fstep(n-1);
}
return 0;
}
}