package cn.weico;
import java.util.Scanner; /**
* 用
Java解决递归算法之"下楼
问题" * @author Administrator * */
public class Stairs { 环
continue;
public static void stair(int i, int s) {
int j;//每步允许走的台阶数 int k;//临时变量 for (j = 3; j > 0; j--) {
if (i < j) {// 如果所剩台阶数小于允许走的台阶数j,跳出本次循
static int[] take = new int[99]; static int num = 0;// 方案数
} else {
take[s] = j;// 记录第s步走j个台阶
if (i == j) { // 如果已经到了楼下,做下列事情
num++;//方案数加1
System.out.print("解决
方案" + num + ":"); for (k = 1; k <= s; k++) {
// 输出本方案的每一步 // 所走的台阶数
用) }
if (k != s) {
System.out.print(take[k] + ",");
} else { System.out.println(take[k]);
}
}
} else {//尚未走到楼下
stair(i - j, s + 1);// 再试剩下的台阶(递归调
}
}
}
}
public static void main(String[] args) { System.out.println("请输入台阶数:"); Scanner sc = new Scanner(System.in); int h = sc.nextInt(); stair(h, 1);
System.out.println("总共有:" + num + "种方案");
}