算法题:10级台阶,一次一步或两步,打印所有的走法。
此题本质是一个数学排列题,但做了一个变化,根据走法不同,排列不同,当然,这个不重要。(如果换成10个位置,每个位置可放1和2,有多少种放的方法,则完全是一个数学排列题了)。
看代码吧,运动后想起来的解法:
@Test
public void testOne2TenStep()
{
printSteps("", 10);
}
private 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");
return;
}
else if(leftSteps == 0)
{
System.out.println(preSteps);
return;
}
for(int i = 1; i <= 2; i++)
{
printSteps(preSteps + " " + i, leftSteps - i);
}
}