爬楼梯
- 输入楼梯的阶梯数n,你可以一次爬1阶,2阶,或者3阶,输出一共有多少种爬楼的方式?
- 注意:将结果对1000000007取余
方法1:递归
import java.util.Scanner;
/**
* 输入楼梯的阶梯数n,你可以一次爬1阶,2阶,或者3阶,输出一共有多少种爬楼的方式?
* 注意:将结果对1000000007取余
*/
public class ClimbStairs {
public static int mod = 1000000007 ;
public static int count(int n){
if(n == 1){
return 1 ;
}
if(n == 2){
return 2 ;
}
if(n == 3){
return 4 ;
}
return count(n-1) % mod + count(n-2) % mod + count(n-3) % mod;
}
public static void main(String[] args){
Scanner input = new Scanner(System.in) ;
int n = input.nextInt() ;
System.out.println(count(n)) ;
}
}
方法2:迭代
import java.util.Scanner;
public class ClimbStairs {
public static int mod = 1000000007 ;
public static int count(int n){
if(n == 1){
return 1 ;
}
if(n == 2){
return 2 ;
}
if(n == 3){
return 4 ;
}
int t1 = 1, t2 = 2, t3 = 4 ;
for(int i=4; i<=n; i++){
int temp = t1 ;
t1 = t2 % mod ;
t2 = t3 % mod ;
t3 = (t1 + t2 + temp) % mod ;
}
return t3 ;
}
public static void main(String[] args){
Scanner input = new Scanner(System.in) ;
int n = input.nextInt() ;
System.out.println(count(n)) ;
}
}