问题
古代有一个塔,塔内有三个座A,B,C,A盘上有64个盘子,盘子大小不等,大的在下,小的在上,有一个和尚想把这64个盘子从A座移到C座,但是每次只允许移动一个盘子,并且在移动过程中,3个座上始终保持大盘在下,小盘在上, 在移动过程中可以利用B座,要求输出移动的步骤
思路:
用B盘子为中转,移动到C盘,先把A上的盘子移动到B,这时以C为中转,最后以A为中转将盘子移动到C,形成递归
代码:
void Hanoi(int n,char A,char B,char C)
//将A座上的n个盘子,以B为中转,移动到C座
{
if(n==1){//只需移动一个盘子
cout<<A<"<<C<<endl;
//直接将盘子从A移动到C
return ;//递归终止
}
Hanoi(n-1,A,C,B);//先将n-1个盘子从A移动到B
cout<<A<"<<C<>n;//输入盘子数目
Hanoi(n,'A','B','C');
return 0;
}