汉诺塔的程序
#include <iostream>
#include <stdlib.h>
using namespace std;
void Hanoi(int n, char A,char B,char C)
{
if(n==1)
{
cout<<"top:"<<A<<"-->"<<C<<endl;
//直接将A上的盘子从A移到C
}
else
{
(5) Hanoi(n-1,A,C,B);
//先把A上的前n-1个盘子从A借助C移到B
cout<<"mid:"<<A<<"-->"<<C<<endl;
//直接将A上的盘子从A移到C
(7) Hanoi(n-1,B,A,C);
//再把B上的前n-1个盘子从B借助A移到C
}
}
int main(int arg,char * args[])
{
int n=3;
//问题规模: 三个盘子
Hanoi(n,'A','B','C');
//把A上的n个盘子从A借助C移到B
system("pause");
return 0;
}
执行结果
top:A-->C
mid:A-->B
top:C-->B
mid:A-->C
top:B-->A
mid:B-->C
top:A-->C
汉诺塔的递归运行轨迹