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
}
}
}

浙公网安备 33010602011771号