汉诺塔java程序_Java编写一个汉诺塔的过程
[java]代碼庫/*
* 需求:用Java編寫一個漢諾塔的過程
* 漢若塔問題,就是把A柱子上面從大到小一次疊放的盤子借助B柱移到C柱上去,規(guī)則是一次只能移動一個盤子,大盤子不能放到小盤子之上
*
* 思想:采用遞歸的方法來接
* 1. 先將A上面的n-1個盤子,移到B柱上
* 2. 然后把A上最大的一個盤子放到C上去
* 3. 然后把B上面的n-1個盤子移到A上去
*
* 步驟:
* 漢若塔用遞歸思考首先考慮一種臨界狀態(tài),把n-1個上面的盤從A—B, 就是把n從A移動到C,最后把n-1個盤從B---C,
* (注意在考慮把n-1個盤從B---C的時候就出現(xiàn)遞歸調用,如果把A,B盤交換就又重復上面的流程了,最后到n = 1的時候就返回)
*
* 偽代碼:
* public void run(int n, char a, char b, char c)
{
if(n==1)
{
move(n,a,c) //等于1的時候把盤從A移動到C
}else
{
run(n-1,a,b,c);//遞歸調用把a上面的n-1個盤移動到B上,怎么表示移動?把柱子交換不就是移動了。
move(n,a,c);
run(n-1,b,a,c);//意圖是把n-1個盤從B移動到A上。
}
}
*
*/
public class HanoiTower {
public static void moveDish(int level, char from, char inter, char to)
{
if(level ==1)
{
System.out.println("從 "+from+"移動盤子1號到 "+to);
}else
{
moveDish(level-1,from,to,inter);
System.out.println("從 "+from+" 移動盤子 "+level+" 號到 "+to);
moveDish(level-1,inter,from,to);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int nDisks = 3;
moveDish(nDisks,'A','B','C');
}
}
//源代碼片段來自云代碼http://yuncode.net
總結
以上是生活随笔為你收集整理的汉诺塔java程序_Java编写一个汉诺塔的过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (pytorch-深度学习系列)网络中的
- 下一篇: pytorch命令式和符号式混合编程