#include <stdio.h>
#include <stdlib.h>
/*
Name:HANOI TOWER
Copyright:
Author:yilonglucky
Date: 01-08-11 09:50
Description:realise the hanoi tower problem by recursion
some parse have been shown
*/
//move n plates: from --> to
//the buffer can be used, if needed
int hanoi(int n, char from, char buffer, char to) {
if(n == 1) {
//move the NO.1 plate directly: from --> to
printf("Move sheet %d from %c to %c\n", n, from, to);
//the NO.1 plate is moved & return
return 0;
}
else {
//n plates to be moved: from --> to
//move the n-1 plates above: from --> buffer
//give this task to the next recursion
hanoi(n-1, from, to, buffer);
//the n-1 plates above were move to buffer
//so the NO.n plate can be moved directly
printf("Move sheet %d from %c to %c\n", n, from, to);
//however the n-1 plates are still in buffer
//move them to the terminal position
//(the "from" position has no plate, & can be one so-called buffer)
hanoi(n-1, buffer, from, to);
//the task given is done & return
return 0;
}
}
int main(int argc, char *argv[])
{
int n;
printf("input number of the plates:");
scanf("%d",&n); //end only if 0 is inputed
while(n){
hanoi(n, 'A', 'B', 'C');
printf("input number of the plates:");
scanf("%d", &n);
}
system("PAUSE");
return 0;
}