import java.util.Arrays; import java.util.Scanner; public class ja420 { public static void han(int n,char a,char b,char c){ if (n==1){ System.out.println("从"+a+"移动到"+c); return; } han(n-1,a,c,b); System.out.println("从"+a+"移动到"+c); han(n-1,b,a,c); } public static void main(String[] args) { han(3,'a','b','c'); } }
汉诺塔递归式运用用了两次递归以下是做题思路
- 每次只能移动一个圆盘。
- 任何时候,在三根柱子的任何一根上面,较大的圆盘不能放在较小的圆盘上面。
- 将上面的n-1个圆盘从起始柱子移动到辅助柱子。
- 将最大的圆盘(第n个圆盘)移动到目标柱子。
- 再将那n-1个圆盘从辅助柱子移动到目标柱子。