1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
#include <conio.h>
#include <stdio.h>
#include <windows.h>
void Hanoi( int numOfDisks, char source, char dest, char by );
void main()
{
char tower1 = 'A';
char tower2 = 'B';
char tower3 = 'C';
int numberOfDisks;
printf("Enter the no. of disks on Tower A:");
scanf_s("%d",&numberOfDisks);
Hanoi( numberOfDisks, tower1, tower2, tower3 );
_getch();
}
void Hanoi( int numOfDisks, char source, char dest, char by )
{
static int step = 0;
if( numOfDisks == 1 )
{
step++;
printf("Step Number - %d - Move a plate from Tower %c, to Tower %c.\n", step, source, dest);
}
else
{
Hanoi(numOfDisks-1, source, by, dest);
Hanoi(1, source, dest, by);
Hanoi(numOfDisks-1, by, dest, source);
}
}
| |