上楼梯(递归解决)
- 有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶、3阶。
- 请实现一个方法,计算小孩有多少种上楼的方式。
为了防止溢出,请将结果Mod 1000000007
给定一个正整数int n,请返回一个数,代表上楼的方式数。
保证n小于等于100000。
package _7递归;
public class a上楼梯 {
static final int mod =100000007;//为了防止溢出
public static void main(String[] args) {
long a=recursion1(5);
System.out.println(a);
}
public static long recursion1(int n) {//顺着想,倒着写
if(n<0) {
return 0;
}
if(n0||n1 ) {
return 1;
}
if(n==2) {
return 2;
}
//n=4 2 1 ;n=2 2 ;b=4 1 4 ;返回n=4 1+2+4=7 ;返回n=3 1+2+4+4; n=2
return recursion1(n-1)%mod +recursion1(n-2)%mod+recursion1(n-3)%mod;
//4 1
}
}