#include<stdio.h>
//汉诺塔(递归法),规定移动时不能将大环放到小环上面(从上往下为n—1)
void move(char pos1,char pos2)
{
printf("%c==>%c\n",pos1,pos2);
}
void Hanno(int n,char pos1,char pos2,char pos3)
{
if(n == 1)
{
move(pos1,pos3);//n=1时,从A移到C
}
else
{
//其实2阶汉诺塔相当于执行了三大步骤:
Hanno(n-1,pos1,pos3,pos2);//1.在ACB的顺序下执行了一阶汉诺塔的移法
move(pos1,pos3);//2.从A->C移动了最大盘
Hanno(n-1,pos2,pos1,pos3);//3.在BAC的顺序下执行了一阶汉诺塔的移法
}
}
int main()
{
Hanno(3,'A','B','C');
getchar();
return 0;
}
C语言:汉诺塔(递归法)
最新推荐文章于 2025-06-01 14:22:54 发布