java汉诺塔(递归实现)
目录
1.1 汉诺塔介绍
1.2 游戏
1.3 汉诺塔实现步骤
1.4 实现代码
测试结果
1.1 汉诺塔介绍
汉诺塔介绍
1.2 游戏
汉诺塔小游戏
1.3 汉诺塔实现步骤
设置3个柱子,初始柱子(A),中间辅助柱子(B),目标柱子(C)。
1、将上面的第1层~第(n-1)层从初始位置(A柱)移动到中间位置(B柱)
2、再将第n层移动到目标位置(C柱)
3、最后将第1层到~第(n-1)层从中间位置(B柱)移动到目标位置(C柱)(三者顺序不能变)
1.4 实现代码
import java.util.Scanner; public class TowerOfHanoi { //计步数 static int count; public static void main(String[] args) { //3根柱子 char a = 'A'; char b = 'B'; char c = 'C'; //创建扫描器对象 Scanner scanner = new Scanner(System.in); System.out.println("请输入圆盘个数:"); int num = scanner.nextInt(); //关闭扫描器 scanner.close(); //创建汉诺塔对象 TowerOfHanoi toh = new TowerOfHanoi(); //调用汉诺塔方法 toh.towerOfHanoi(num, a, b, c); System.out.println("一共" + count + "步,把所有圆盘从A移到C~"); } public void towerOfHanoi(int num ,char A ,char B, char C) { if (num < 0) { System.out.println("请输入正整数~"); } if (num == 1) { System.out.println("第" + (++count) + "步: " + A + " -> " + C); return; }else { // 递归调用(3个顺序不能改变) towerOfHanoi(num-1,A,C,B);//把A柱上的移向B柱 System.out.println("第" + (++count) + "步: " + A + " -> " + C);//把A柱上的移向C柱 towerOfHanoi(num-1,B,A,C);//把B柱上的移向C柱 } } }