大家看看我这个用java编写的出了什么问题?public class Hannoi {
//盘子的数量 第一个盘子。第2个盘子 第3个盘子 string 3个盘子的名字
public void hannoi(int num,String a,String b,String c)
{
if(num>0)
{
hannoi(num=1,a,c,b);
System.out.println(a+ ">>>>" +c);
hannoi(num-1,b,a,c);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Hannoi h = new Hannoi();
h.hannoi(1, "A","B","C");
}}
//盘子的数量 第一个盘子。第2个盘子 第3个盘子 string 3个盘子的名字
public void hannoi(int num,String a,String b,String c)
{
if(num>0)
{
hannoi(num=1,a,c,b);
System.out.println(a+ ">>>>" +c);
hannoi(num-1,b,a,c);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Hannoi h = new Hannoi();
h.hannoi(1, "A","B","C");
}}
{
if(num>0)
{
//将a柱的n-1块移动到b
hannoi(num=1,a,c,b);//应该是你这里写错了num=1 !?
//将a柱上的最后一块移动到c
System.out.println(a+ ">>>>" +c);
//将b柱上的n-1块移动到c
hannoi(num-1,b,a,c);
}
}
public class Hannoi { public void hannoi(int num,String a,String b,String c)
{
if(num==1){
//递归一定要有出口!
System.out.println("盘子:"+1+a+">>>>"+c);
}else{
hannoi(num-1,a,c,b);
System.out.println("盘子:"+num+a+ ">>>>" +c);
hannoi(num-1,b,a,c);
}
}
public static void main(String[] args) {
Hannoi h = new Hannoi();
h.hannoi(3, "A","B","C");
} }结果:
盘子:1A>>>>C
盘子:2A>>>>B
盘子:1C>>>>B
盘子:3A>>>>C
盘子:1B>>>>A
盘子:2B>>>>C
盘子:1A>>>>C
汉诺塔的非递归,在空间复杂度上大大降低。