目标效果:
package MOOC;
import java.util.Scanner;
/**
汉诺塔问题描述: A、B、C 三个桌子,其中A桌子上放了几个大小不同的盘子,盘子的排列顺序为: 从上到下,依次从小到大递增;
现要求把这些盘子从 A 桌子上移动到 C 桌子上,盘子移动时有一点要求:每次移动必须保证三张桌子上大盘子在下、小盘子在上;
打印移动次序。
* @author Vivinia
*
* 2018年1月28日
*/
public class HanNuoTa {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
input.close();
Hanoi(n,'A','B','C');
}
static //将src上的n个盘子,以mid为中转,移动到dest上
void Hanoi(int n,char src,char mid,char dest) {
if(n==1) { //只移动一个盘子
System.out.println(src+"->"+dest); //直接将盘子从src移动到dest
return; //递归中止
}
Hanoi(n-1, src, dest, mid); //先将n-1个盘子从src移动到mid
System.out.println(src+"->"+dest); //再将最后一个盘子从src移动到dest
Hanoi(n-1, mid, src, dest); //最后将n-1个盘子从mid移动到dest
return;
}
}