7-递归-汉诺塔问题-Scala实现

package com.atguigu.datastructures.recursion

object HanoiTower {
  def main(args: Array[String]): Unit = {
    hanoiTower(10,'A','B','C')
  }


  //汉诺塔
  //思路
  //如果只有一个盘A-c
  //如果有两个或者两个以上盘,将看成两个部分,最下面盘,和上面的盘
  //1.将 上面的盘 a-b
  //2.将 最下面的盘 a-c
  //3.将 b塔的所有盘 移动到c,b-c
  def hanoiTower(nums:Int,a:Char,b:Char,c:Char):Unit={
    if (nums == 1){
      println("第1个盘从"+a+"->"+c)

    }else{
      hanoiTower(nums-1,a,c,b)//将nums-1个盘,从a->b,中间借助c
      println("第"+nums+"个盘从"+a +"->"+c)
      hanoiTower(nums-1,b,a,c)//将nums-1个盘,从b->c,中间借助a
    }
  }
}

  

posted @ 2020-06-11 15:29  济默  阅读(233)  评论(0编辑  收藏  举报