问题:假设有50阶台阶,每次可以选择下3阶、2阶、或者1阶,问下到底一共可以有多少种下法,并用JAVA代码实现
分析:很明显这是一个递归的问题
假设只有一阶台阶,那么只有一种走法,即下一阶
假设有两阶台阶,那么有两种走法:
a.一次下两个台阶
b.一次一个台阶下两次
假设有三阶台阶,那么有四种走法:
a.下一次三阶
b.下一次两阶,再下一次一阶
c.下一次一阶,再下一次两阶
d.下三次一阶
由上所述,易得
f(n) = f(n-3) + f(n-2) + f(n-1)
解答:
package javaapplication1;
/**
*
* @author meng
*/
public class DownStairs1 {
/**
* @param args
*/
public static void main(String[] args) {
int currentStep = 50;
System.out.println("totaly possibility is: " + totalPsblt(currentStep));
}
public static int totalPsblt(int n) {
switch (n) {
case 1:
return 1;
case 2:
return 2;
case 3:
return 4;
default:
return totalPsblt(n - 1) + totalPsblt(n - 2) + totalPsblt(n - 3);
}
}
}
评析:上段JAVA仅能实现,但是效率比较低