题目:
给定一个整数n,代表汉诺塔游戏中从小到大放置的n个圆盘,假设开始时所有的圆盘都放在左边的柱子上,想按照汉诺塔游戏的要求把所有的圆盘都移到右边的柱子上。实现函数打印最有轨迹。
思路:
此题可以采用递归的思想来解决,首先设有三个柱子分别设为left,mid,right,另外有n个圆盘,现将1~n-1个圆盘从left移动到mid上,之后再将第n个圆盘从left上移动到right上,最后将mid上的1~n-1个圆盘移动到right上。
解题代码:
public void hanoi(int n){
if(n>0){
func(n,"left","mid","right");
}
}
public voif func(int n,String left,String mid,String right){
if(n==1){
System.out.println("move from "+left+" to "+right);
}else{
func(n-1,left,right,mid);
func(1,left,mid, right);
func(n-1,mid,left,right);
}
}