一、问题

Tower of Hanoi,是一个源于印度的古老传说:大梵天创建世界时做了三根金刚石柱,在一根柱子从上往下按大小顺序摞着64片黄金圆盘,大梵天命令婆罗门把圆盘重新摆放在另一根柱子上,并且规定:

  • 一次只能移动一个圆盘
  • 小圆盘上不能放大圆盘

请使用程序代码模拟圆盘的移动过程,并估算出时间复杂度。

二、思路

  • 假设每根柱子标号a\b\c,每个圆盘用1,2,3...表示其大小,圆盘初始在a,要移动到的目标是c。
  • 如果只有一个圆盘,此时是最小问题,可以直接求解
  • 移动圆盘1 a-->c:

Java-递归经典题目-汉诺塔_时间复杂度

  • 如果有两个圆盘:
  • 圆盘1 a-->b
  • 圆盘2 a-->c
  • 圆盘1 b-->c

Java-递归经典题目-汉诺塔_程序代码_02

  • 如果有三个圆盘
  • 圆盘 12 a-->b
  • 圆盘 3 a-->c
  • 圆盘 12 b-->c


  • 如果有四个圆盘
  • 圆盘 123 a-->b
  • 圆盘 4 a-->c
  • 圆盘 123 b-->c