思路:爬楼梯是面试中经常出的一道题,
当只能走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对于递归次数是有上限的,如果遇到出现上限了,那么应该采用别的方法或者分段递归
本文深入探讨了经典的爬楼梯问题,提供了三种不同条件下的解决方案,包括只能走1级、2级,1级、2级、3级以及2级、3级的情况。通过递归算法实现了代码,并提醒读者注意JVM递归深度限制。
1021

被折叠的 条评论
为什么被折叠?



