习题

24 阅读1分钟

题目

f(n, A, B, C) f(盘子的数量,起点,要借用的柱子,终点) 目标:在A上有n个盘子,我们需要借助B,把他们都移动到 C

如果:n == 1: 直接从 A 移动到 C 否则:

  1. 把n-1个盘子从A 移动到 B
  2. 把一个盘子从A移动到C
  3. 把n-1个盘子从B 移动到 C
object base38 {
    def f(n: Int, A: Char, B: Char, C: Char): Unit = {
      if (n == 1) {
        println(s"${A} ----> ${C}")
      } else {
        f(n - 1, A, C, B)
        println(s"${A} ----> ${C}")
        f(n - 1, B, A, C)
      }
    }


    def main(args: Array[String]): Unit = {
      f(4, 'A', 'B', 'C')
    }
}

image.png