这个汉诺塔今天测试居然给我碰上了,感觉很麻烦,最后上了百度,还是比较迷茫。
public class Haniojava
{
public static void main(String args[])
{
byte n=2;
char a='A',b='B',c='C';
hanio(n,a,b,c);
}
public static void hanio(byte n,char a,char b,char c)
{
if(n==1)
System.out.println("move "+a+" to "+b);
else
{
hanio((byte)(n-1),a,c,b);
System.out.println("move "+a+" to "+b);
hanio((byte)(n-1),c,b,a);
}
}
}
这个递归的东西我还真的有点迷糊。这里的解法完全是按照2个盘子去写的。
另外我对递归算法状态的保存也有点不是很信任。。。。
现在记下这些无解的东西,希望以后能够想得明白。
public class Haniojava
{
public static void main(String args[])
{
byte n=2;
char a='A',b='B',c='C';
hanio(n,a,b,c);
}
public static void hanio(byte n,char a,char b,char c)
{
if(n==1)
System.out.println("move "+a+" to "+b);
else
{
hanio((byte)(n-1),a,c,b);
System.out.println("move "+a+" to "+b);
hanio((byte)(n-1),c,b,a);
}
}
}
这个递归的东西我还真的有点迷糊。这里的解法完全是按照2个盘子去写的。
另外我对递归算法状态的保存也有点不是很信任。。。。
现在记下这些无解的东西,希望以后能够想得明白。