呐 下图这个就是汉诺塔啦~小时候可是经常玩呢,大家都知道它的解决规则与步骤啦~那怎嚰用用代码来描绘一下呢~

分析:规则很简单,我们发现当只有一层时,我们直接可以把所有(一个)的小环移到目标柱子上,当大于2时,我们发现,我们必须先把上面的N-1层移到辅助的柱子(目标柱子以外的两个都是辅助柱子)上,才能把第N层的小环移到目标柱子,是不是发现啦~我们只需要写一个递归函数,每次把第N-1上的所有环移到辅助的柱子,这样就可以一层一层的把小环从大到小移到目标柱子了呢~~~
publicclassHanoiTest
{
privatestaticintcount=0;
publicvoidhanoi(intn,charx,chary,charz){
if(n==1)
move(1,x,z);
else{
hanoi(n-1,x,z,y);
move(n,x,y);
hanoi(n-1,y,z,x);
}
}
publicvoidmove(intn,chara,charb){
count++;
System.out.println("第"+count+"步:"+"将"+n+"从"+a+"移到"+b);
}
publicstaticvoidmain(String[]args)
{
System.out.println("请输入汉诺塔的高度:");
Scannerscanner=newScanner(System.in);
intn=scanner.nextInt();
/*int[]
hanoi1 = newint[n],hanoi2 = newint[n],hanoi3 = newint[n];
for(inti=0;i<n;i++){
hanoi1[i]=i+1;
hanoi2[i]=0;
hanoi3[i]=0;
}*/
HanoiTesthanoiTest=newHanoiTest();
hanoiTest.hanoi(n,'x','y','z');
}
}
本文介绍了经典的汉诺塔问题及其解决方法,并通过递归算法实现了汉诺塔问题的解决方案。文中详细解释了递归函数的工作原理,并提供了一个完整的Java实现示例。
375

被折叠的 条评论
为什么被折叠?



