递归调用实例--汉诺塔

有A,B,C三个柱子,已知A柱上有三个从小到大三个木板1,2,3,要求A,B,C三个柱子顺序不变,将A柱上的三个木板全部移动到C柱,并且大的木板不许压住小的木板,请写出移动的方法?

一、用数学推演实现

解:用递归思想解决问题

若想将三个木板都移动到C柱,且大木板不许压小木板,则将1,2木板看成一个整体,先将1,2的这个整体移动到B柱,再将3这个木板移动到C柱,最后在将1,2木板这个整体移动到C柱。

2个木板 A-->B

1个木板A-->C

2个木板B-->C

如何实现  2个木板 A-->B 需要借助C柱

1个木板 A-->C

1个木板A-->B

1个木板C-->B

实现1个木板A-->C

如何实现2个木板B-->C 需要借助B柱

1个木板B-->A

1个木板B-->C

1个木板A-->C

所以将A柱上的三个木板全部移动到C柱移动方法是共7步

1个木板 A-->C

1个木板A-->B

1个木板C-->B

1个木板A-->C

1个木板B-->A

1个木板B-->C

1个木板A-->C

二、用代码实现

当A柱上有一个木板,直接将木板从A柱移到C柱

假设A柱上共有n个木板,

先将n-1个木板从A柱移动到B柱

再将剩下的一个木板从A柱移动到C柱

最后再将n-1个木板从B柱移动到C柱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值