思路:爬楼梯是面试中经常出的一道题,
当只能走1级,2级台阶时,根据规律可以得出走法 k=f(n-1)+f(n-2);
当只能走1级,2级,3级台阶时,根据规律可以得出走法 k=f(n-1)+f(n-2)+f(n-3);
当只能走2级,3台阶时,根据规律可以得出走法 k=f(n-2)+f(n-3)。
到这里聪明的你肯定发现了规律了吧!下面是我利用这个规律的代码实现
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
int n=Integer.valueOf(input.nextLine());
System.out.println(printA(n)+" "+printB(n)+" "+printC(n));
}
//只能走1,2级时
private static int printA(int n) {
if(n<=2) return n;
else {
return printA(n-1)+printA(n-2);
}
}
//只能走1,2,3级时
private static int printB(int n) {
if(n<=2) return n;
else if(n==3) return 4;
else {
return printB(n-1)+printB(n-2)+printB(n-3);
}
}
//只能走2,3级时
private static int printC(int n) {
if(n==1) return 0;
else if(n<=4) return 1;
else {
return printC(n-2)+printC(n-3);
}
}
}
其他的以此类推就好了,不过要注意,JVM对于递归次数是有上限的,如果遇到出现上限了,那么应该采用别的方法或者分段递归