汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
后来,这个传说就演变为汉诺塔游戏,玩法如下:
1.有三根杆子A,B,C。A杆上有若干碟子
2.每次移动一块碟子,小的只能叠在大的上面
3.把所有碟子从A杆全部移到C杆上
java代码:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
han(sc.nextInt(),"A","B","c");
}
/**
* @param n 共有n个盘子
* @param from 开始的柱子
* @param in 中间的柱子
* @param to 目标柱子
* 无论有多少个盘子,都认为只有两个,上面的所有盘子和最下面的一个盘子
*/
static void han(int n,String from,String in,String to) {
if(n==1) {
System.out.println("将第1个盘子从"+from+"移到"+to);
}else {
//移动上面所有的盘子到中间位置
han(n-1,from,to,in);
//移动最下面的盘子到目标位置
System.out.println("将第"+n+"个盘子从"+from+"移到"+to);
//移动上面所有的盘子到目标位置
han(n-1,in,from,to);
}
}
}