走第一台阶只有1种方法, 走第二台阶有2种方法,(一步或两步..) 走第三台阶的时候就是分两步了:可以从第一台阶直接到第三台阶,也可以是从第二台阶到第三台阶,所以有1+2=3种方法; 走第四台阶也是分两步:可以从第二台阶直接到第四台阶,也可以是从第三台阶到第四台阶,所以有3+2=5种方法; ............. 以此类推,走1-9台阶需要的步数就是:1,2,3,5,8,13,21,34,55(斐波那契数列:每项等于前两项和)所以第10台阶需要的步数就是:34+55=89步
public class nm123 {
public static void main(String[] args) {
printSteps("", 10);
}
public static int total=0;
private static void printSteps(String preSteps, int leftSteps)
{
if(preSteps == null)
preSteps = "";
if(leftSteps < 0)
{
System.out.println("can't print Steps, leftSteps < 0");
}
if(leftSteps == 1)
{
System.out.println(preSteps + " 1");
total++;
return;
}
else if(leftSteps == 0)
{
System.out.println(preSteps);
total++;
return;
}
for(int i = 1; i <= 2; i++)
{
printSteps(preSteps + " " + i, leftSteps - i);
}
System.out.println(total);
}
}