/*
本程序是模拟汉诺塔的操作过程,
将每一步的执行方法打印出来,
并记录执行次数;
主程序采用递归方式;
每执行一步等待0.5秒;
*/
#include<stdio.h>
#include<conio.h> /*for the function: clrscr()*/
#include<dos.h> /*for the function: delay(int ms) */
int count = 0; /*move times*/
/*将盘从柱子A移动到柱子B*/
void move(char A,char B)
{
delay(500); /*wait 0.5s */
printf(“/n%d: %c -> %c”,++count,A,B);
}
/*汉诺塔主过程*/
void hanoi(int n,char A,char B,char C)
{
if(n < 1)
return;
if(n == 1)
{
move(A,C);
return;
}
hanoi(n-1,A,C,B);
move(A,C);
hanoi(n-1,B,A,C);
}
int main()
{
int n = 0; /*盘子个数*/
clrscr(); /*clear the screen*/
printf(“Please input a int:”);
scanf(“%d”,&n);
/*主过程*/
hanoi(n,’A’,’B’,’C’);
/*任意键退出*/
printf(“/nPress any key to EXIT!”);
return getch(); /*wait to get a char*/
}