# 汉洛塔问题的解决思路及其代码

汉洛塔问题的解决思路及其代码

问题描述:

相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置n个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。在这里插入图片描述
分析:
如果要将n个圆盘按条件从A杆移到C杆,如果可以将n-1个圆盘移动到B杆,则可以将A杆中最大的圆盘移到C杆,那么我们就完成了一步,此后就可以不用考虑最大的盘,那么问题就变成了n-1个圆盘的问题了,依次类推,要想将n-1个圆盘移动到B杆,则需要将n-2个圆盘移动到C杆,要想将n-2个盘移动到C杆,则需要将n-3个盘移到B杆…
最后问题就变成了将一个圆盘移到B或C杆,然后就可以一步一步回推。
这个就像你要买冰箱,老板说你可以拿洗衣机来换,然后你去买洗衣机,老板说你可以拿空调来换,然后空调老板说你可以拿麻将桌来换,然后最后的老板说你可以拿一个鸡蛋来换,最后你拿着一个鸡蛋去一个一个换,最后得到了你想要的冰箱。至于你说为什么这么麻烦,别问,问就是没钱。
在这里插入图片描述
代码如下:

//使用递归方法
#include<stdio.h>
void move(c
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值