#include
//移动函数
void move(char a,char b)
{
printf("%c->%c\n",a,b);
}//表示a->b
//a是源塔,b是辅助塔,c是目标塔
void hannuota( int n, char a, char b, char c)
{
//递归出口
if( 1 == n )
{
move(a,c); //如果只有一层,直接a->c
}
else
{
hannuota(n-1,a,c,b); //先将n-1层从a搬到b
move(a,c); //剩下第n层直接a->c
hannuota(n-1,b,a,c); //最后将n-1层从b搬到c
}
}
int main()
{
int n;
scanf("%d", &n); //有多少层塔
hannuota(n,'A','B','C');
return 0;
}
/******************************************************
在codeblock上的测试结果为
3
A->C
A->B
C->B
A->C
B->A
B->C
A->C
******************************************************/
汉诺塔——C语言
最新推荐文章于 2023-05-02 00:49:01 发布