大家看看我这个用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");
}}

解决方案 »

  1.   

    goole || baidu || ...
      

  2.   

    public  void hannoi(int num,String a,String b,String 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);
     }
     }
      

  3.   

    你的递归没有出口,优化了一下你的代码
    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
      

  4.   

    http://bbs.csdn.net/topics/390325061
    汉诺塔的非递归,在空间复杂度上大大降低。