汉诺塔问题可描述如下:
有三根木桩,第一根木桩上串有n个大小不一的盘子,现要求将所有的盘子转移到第三根木桩上,一次只能移动一个盘子,且需始终保证小盘子在大盘子的上方。输入盘子的个数n,输出移动步骤。如输入:3,则移动步骤为:
1->3 1->2 3->2 1->3 2->1 2->3 1->3
对于任意数量的盘子,移动步骤可分为三步,如下图所示:
代码如下:
import java.util.*;
public class Hanoi {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
hanoi(n,1,2,3);
System.out.println();
in.close();
}
public static void hanoi(int n, int first, int second, int third){
if(n==1)
System.out.print(first+"->"+third+" ");