递归编程汉诺尔塔问题
程序设计思想:首先输入要移动的盘子数m,与1进行比较,如果m>1,将第2个至与第m个先移到b上,然后将a上的盘子移到c上,再将b上的盘子移到a上,m--,依次进行此操作直至全部移到c上。
程序流程图:

源代码:
package hanoiTest;//信1605-3 20163432 张运涛
import java.util.Scanner;
public class HanoiTest {
int m=0;
static int step = 0;
/**
* @param args
*/
Scanner input =new Scanner(System.in);
public int init()
{
//int m=0;
System.out.println("请输入要移动的盘子数:");
m=input.nextInt();
return m;
}
public static void main(String[] args) {
HanoiTest h=new HanoiTest();
h.init();
h. hanioSort(5, "A", "B", "C");
}
/**
* 递归函数,用来遍历hanoi步骤
*/
public void hanioSort(int num ,String a ,String b ,String c){
if(num == 1){
move(num,a,c);
} else{
hanioSort(num-1, a, c, b);
move(num,a,c);
hanioSort(num-1, b, a, c);
}
}
public void move(int num ,String a,String b){
step ++ ;
System.out.println("第"+step+"步,盘子"+num+"从"+a+"塔移到"+b+"塔");
}
}



浙公网安备 33010602011771号