有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柱