zl程序教程

您现在的位置是:首页 >  其它

当前栏目

汉诺塔

汉诺塔
2023-09-11 14:15:52 时间

先看一下二层汉诺塔的一定过程:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果多层的话:
在这里插入图片描述
通过上面分析你会发现,我们的大致步骤如下:
一、先将 n-1 层的汉诺塔 通过 C 移动到 B, 将最地下的一层移到C
在这里插入图片描述
二、再将B上面的汉诺塔移动同通过 A 移动到 C
在这里插入图片描述
代码如下:

#include<cstdio>
void hanoi(int n,char A,char B,char C)
{
	if(n==1)
	{
		printf("%c -> %c\n",A,C);
	}
	else
	{
		hanoi(n-1,A,C,B);//n-1 层通过C 移动到B
		printf("%c -> %c\n",A,C);
		hanoi(n-1,B,A,C);//n-1层通过A 移动到C
	}
} 
int main(void)
{
	hanoi(2,'A','B','C');
	return 0;
} 

不懂的可以再看一下视频。里面博主讲的特别好:
https://www.bilibili.com/video/BV1dx411S7sY