Java 河内塔,带有非常具体的psuedo代码

Java 河内塔,带有非常具体的psuedo代码,java,towers-of-hanoi,non-recursive,Java,Towers Of Hanoi,Non Recursive,我正在尝试实现以下psuedo代码: place all disks in peg 0 p1 = 0 // Disk 1 is located in peg p1, which is peg 0 Loop { move Disk 1 from peg p1 to peg (p1 + 1) % 3 p1 = (p1 + 1) % 3 // update peg location of Disk 1 p = (p1 + 1) % 3 p' = (p1 + 2) % 3 // peg p and pe

我正在尝试实现以下psuedo代码:

place all disks in peg 0
p1 = 0 // Disk 1 is located in peg p1, which is peg 0
Loop {
move Disk 1 from peg p1 to peg (p1 + 1) % 3
p1 = (p1 + 1) % 3 // update peg location of Disk 1
p = (p1 + 1) % 3
p' = (p1 + 2) % 3
// peg p and peg p' are the two other pegs besides peg p1
if peg p and peg p' are both empty
then return // we are done with the moves
else if peg p is empty
then move the top disk in peg p' to peg p
else if peg p' is empty
then move the top disk in peg p to peg p'
else
let d = top disk of peg p
let d' = top disk of peg p'
if d < d'
then move disk d from peg p to peg p'
else move disk d' from peg p' to peg p
}

谢谢你的帮助。我最终使用了堆栈,并将整个代码基于p=0、p=1和p=2的情况。它很长也很难看,但是它使用给定的伪代码工作

n、p1、p和pp是什么?输入/输出组合是什么?n是磁盘的数量,p1从0号塔开始,p从1号塔开始,pp从2号塔开始允许使用arraylist吗?或者它必须是一个数组对象吗?我可以使用arraylist,甚至是堆栈数组,但我对使用它们的语法感到不舒服。看看堆栈吧……它们是后进先出的后进先出数据结构,非常容易使用。它们有两种操作:推送和弹出。Push将元素添加到堆栈中。Pop从堆栈中取出一个。您还可以查看堆栈是否为空。您应该为每个塔创建一个堆栈。
public static void moveIt(int n, int p1, int p, int pp)
    {
        p1=0;
        int pegs[][]=new int[3][n];
        pegs[p1][0]=n;
        pegs[p][0]=0;
        pegs[pp][0]=0;
        while(true)
        {
            System.out.println("move disk 1 from peg "+p1+" to peg "+(p1+1)%3);
            pegs[p1][0]=pegs[p1][0]-1;
            pegs[(p1+1)%3][0]=pegs[(p1+1)%3][0]-1;
            p1=(p1+1)%3;
            p=(p1+1)%3;
            pp=(p1+2)%3;
            System.out.println(pegs[p][0]);
            if((pegs[p][0]==0)&&(pegs[pp][0]==0))
                return;
            else if(pegs[p][0]==0)  
                System.out.println("move the disk "+n+" in peg "+pp+" to peg "+p);
            else if(pegs[pp][0]==0)
                System.out.println("move the top disk in peg "+p+" to peg "+pp);
        }
    }