递归_汉诺塔问题

来源:互联网 发布:淘宝隐形降权怎么办 编辑:程序博客网 时间:2024/05/16 11:09

     记得曾经学习递归调用的时候,老师讲过汉诺塔的问题。当时愣是没听明白,后来就一了了之了。

   上次是半年前,一次无聊的课上,突然想到这个问题,于是凭借对问题大概的记忆,我用笔在本子上演算,结果三节课的时间才算把程序写出来,但是事后却似乎瞬间遗忘---没有彻底理解。

   这一次,马上找工作了,回头看下基础,看到递归于是找了几道题自己做了下,感觉还是吃力。但是能做出来。又想重温可恨的汉诺塔问题:结果又要从头再来。索性前面做了几道题有影响,十分钟就解决了,感觉自己对递归有理解了一分:不爱写东西的我也记下这次收获----递归值得深思。以后有时间还会回首再看看递归的。

   JAVA代码如下:

static int num=0;
 static void f(int n,char origin,char assist,char destination){
  if(n==1){
   num++;
   System.out.println("第"+num+"步:"+origin+"->"+destination);
  }else{
    f(n-1,origin,destination,assist);
    f(1,origin,assist,destination);
    f(n-1,assist,origin,destination);
  }
 }
 public static void main(String []args){
  f(4,'A','C','B');
  System.out.println("总共需要:"+num+"步!");
 }