Thursday, October 7, 2010

Towers of Hanoi












public class TowersOfHanoi
{
private int numDisks;

public TowersOfHanoi( int disks )
{
numDisks = disks;
}

public void solveTowers( int disks, int sourcePeg, int destinationPeg, int tempPeg)
{
if(disks == 1)
{
System.out.printf("\n%d --> %d", sourcePeg, destinationPeg);
return;
}

//recursion step -- move (disk - 1) disk from sourcePeg
//to tempPEg using destinationPeg
solveTowers(disks - 1, sourcePeg, tempPeg, destinationPeg );

//move last disk from sourcePeg to destinationPeg
System.out.printf( "\n%d --> %d", sourcePeg, destinationPeg );

//move (disks - 1) disks from tempPeg to destinationPeg
solveTowers( disks - 1, tempPeg, destinationPeg, sourcePeg);
}
}



public class TowersOfHanoiTest
{
public static void main( String args[] )
{
int startPeg = 1;
int endPeg = 3;
int tempPeg = 2;
int totalDisks = 3;
TowersOfHanoi towersOfHanoi = new TowersOfHanoi( totalDisks );

towersOfHanoi.solveTowers( totalDisks, startPeg, endPeg, tempPeg );
}
}

No comments:

Post a Comment