前言:
记得我第一次从C语言接触递归的时候,真是把我绕到了。一个及其庞大的问题,虽然规律很简单,使用其他手段真的是不知道该怎么做。递归的出现,使开始感觉真的太神奇了。难道编程的乐趣就是这样吗?
java代码:
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
hanoi(n,'a','b','c');
}
//Hanoi
static int m = 0;
static void hanoi(int n,char a,char b,char c) {
if(n > 0) {
hanoi(n-1,a,c,b); //将a上面的n-1个盘子 从 a 移动到 c,借助b棒
System.out.println("第" + ++m + "次" + " from " + a + " to " + b);//输出将第n个盘子移动到b上的可视结果
hanoi(n-1,c,b,a); //将c上面的n-1个盘子从 c 移动大 b,借助a棒
}
}
}