问题描述:
有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或者二级,要走上m级,共有多少走法?注:规定从一级到一级有0种走法。
给定一个正整数int n,请返回一个数,代表上楼的方式数。
输入:
3
输出:
3
思路:类似于找零钱问题,a[i]表示上第i级楼梯可选的方式数,a[1]=1,a[2]=2,a[i]分两种情况,第一种是最后一次只跨一级,此情况下方式数为a[i-1],第二种情况最后一次跨两级,此情况下方式数为a[i-2],因此a[i]=a[i-1]+a[i-2]
import java.util.Scanner;
//上台阶
public class Stair {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
//System.out.println(countWay(n));
int[] a=new int[n+1];
a[0]=0;
a[1]=1;
a[2]=2;
for (int i = 3; i < a.length; i++) {
a[i]=a[i-1]+a[i-2];
}
System.out.println(a[n]);
}
//递归方法
private static int countWay(int n) {
if (n<=0) return 0;
if (n==1) return 1;
if (n==2) return 2;
return countWay(n-1)+countWay(n-2);
}
}