Hanoi塔问题,这是一个古典的数学问题,是一个只有用递归方法解决的问题。问题是这样的:古代有一个梵塔,塔内有3个座A,B,C,开始时A座上有64个盘子,盘子大小不等,大的在下,小的在上。有一个老和尚想把这64个盘子从A座移到C座,但每次只允许移动一个盘,且在移动过程中在3个座上都始终保持大盘在上,小盘在下。在移动过程中可以利用B座
#include <stdio.h>
void move(char x, char y){
static int i = 0;
printf("%3d: %c --> %c\n",++i, x, y);
}
void hanoi(int n, char a, char b, char c){
if(1 == n){
move(a, c);
}else {
hanoi(n-1, a, c, b);
move(a, c);
hanoi(n-1, b, a, c);
}
}
int main(int argc, char *argv[])
{
int n = 0;
printf("How much stone:");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
return 0;
}