【C语言】汉诺塔问题【递归】

【C语言】汉诺塔问题【递归】,第1张

一、问题背景

汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

二、思路分析

三、代码演示

特别注意:这里的’A ‘B’'C '与思路分析图片中的意义不同

//汉诺塔
#include 
void move(char pos1, char pos2)
{
	char pos3;
	pos3 = pos1;
	pos1 = pos2;
	pos2 = pos3;
}
void Hanio(int n, char pos1, char pos2, char pos3)
{
	if (n == 1)
		move(pos1, pos3);
	else
	{
		Hanio(n - 1, pos1, pos3, pos2);
		printf("%c->%c\n", pos1, pos3);
		move(pos1, pos3);
		Hanio(n - 1, pos2, pos1, pos3);
	}
}
int main()
{
	Hanio(3, 'A', 'B', 'C');
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/872592.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存