package com.org;
import java.util.Scanner;
/**
* 汉诺塔算法
*/
public class HanoiTest {
// 记录第几次移动
static int sum=0;
public static void main(String[] args) {
// A,B,C,三根柱子。
String a="A";
String b="B";
String c="C";
Scanner scanner=new Scanner(System.in);
System.out.println("请输入总的盘子数:");
int n=scanner.nextInt();
hanio(n,a,b,c);
scanner.close();
}
/**
*记录碟子的移动
* @param i:盘子的编号1 2 3 4......
* @param from:从哪
* @param to:移到哪
*/
public static void move(int i,String from,String to){
System.out.println("第"+(++sum)+"次移动:"+"盘子"+i+":"+from+"---->"+to);
}
/**
* 汉诺塔算法思想
* @param n:盘子的个数
* @param from:当前的柱子
* @param inter:中间的辅助柱子
* @param to:目的柱子
*/
public static void hanio(int n,String from,String inter,String to){
if(n==1){
move(n,from,to);
}else {
hanio(n-1,from,to,inter);
move(n,from,to);
hanio(n-1,inter,from,to);
}
}
}
Java汉诺塔游戏详解
最新推荐文章于 2024-03-07 16:14:13 发布