经典中的经典,让我们再次回味!
#include <stdio.h>
int sum=0;//全局变量,记录第几次搬
void hanoi(int n,char x,char y,char z)//递归函数,将编号为n的的盘子借助y柱子,从x柱子到z柱子
{
if(n==1)//如果是1,就直接搬
printf("第%d轮,将%d号盘子从%c号柱子到%c号柱子\n",++sum,n,x,z);
else//不然的话,就要先把上面n-1个盘子从x搬到y,再将n从x搬到z
{
hanoi(n-1,x,z,y);//把上面n-1个盘子从x搬到y
printf("第%d轮,将%d号盘子从%c号柱子到%c号柱子\n",++sum,n,x,z);//再将n号盘子从x搬到z
hanoi(n-1,y,x,z);//剩下的盘子在y柱子上,就要借助x柱子,从y到z柱子,继续递归
}
}
int main()
{
char x='X',y='Y',z='Z';
int n=5;//定义有5个盘子
hanoi(n,x,y,z);
}