递归编程汉诺尔塔问题

程序设计思想:首先输入要移动的盘子数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+"塔");
}
}

 

posted @ 2017-10-13 12:27  小张在搬砖  阅读(126)  评论(0)    收藏  举报