过程:我们假设有a柱里有三个圆盘由小到大编号为1,2,3,需要将a柱里的三个圆盘移到c柱上,用数学过程很简单:如下图::
但是这样只限于圆盘少的数量,这是我们只需要引入递归来完成即可,我们如果想求n个圆盘如何放到c
,只需要将(n-1)个圆盘由a借助c放到b中,这样a里只剩一个圆盘也就是n,然后将n由a放入c中即可,接下来再把b柱子中的(n-1)个圆盘由b借助a放到c即可完成
如下图:
以下就是代码:
package 汉诺塔;
/**
* 汉诺塔
* @author
*
*/
public class HanNuoTa {
public static void Show(int n,String A,String B,String C) {
if(n==1) {
System.out.println("将"+n+"由"+A+"放到了"+C);
}else {
Show(n-1,A,C,B);
System.out.println("将"+n+"由"+A+"放到了"+C);
Show(n-1,B,A,C);
}
}
public static void main(String[] args) {
String A = "a";
String B = "b";
String C = "c";
Show(3,A,B,C);
}
}
这只是三个圆盘汉诺塔,以下是结果:
将1由a放到了c
将2由a放到了b
将1由c放到了b
将3由a放到了c
将1由b放到了a
将2由b放到了c
将1由a放到了c