#define _CRT_SECURE_NO_WARNINGS 1
#include"stdio.h"
void move(char pos1, char pos2)
{
printf(" %c->%c ", pos1, pos2);
}
//N:代表盘子的个数
//pos1:起始位置
//pos2:中转位置
//pos3:目的位置
void Hanoi(int n, char pos1, char pos2, char pos3)
{
if (n == 1)
{
move(pos1, pos3);//从起始目的移动到目的位置
}
else
{
Hanoi(n - 1, pos1, pos3, pos2);//通过中转位置移动到pos2,第二个参数是中转位置
move(pos1, pos3);
Hanoi(n - 1, pos2, pos1, pos3);//起始位置,中转位置,目的位置
}
}
int main()
{
Hanoi(1, 'A', 'B', 'C');
printf("\n");
Hanoi(2, 'A', 'B', 'C');
printf("\n");
Hanoi(3, 'A', 'B', 'C');
}
C语言实现汉诺塔(递归)
最新推荐文章于 2024-09-15 17:25:08 发布