class Solution:
def hanota(self, A: List[int], B: List[int], C: List[int]) -> None:
"""
Do not return anything, modify C in-place instead.
"""
def move(n, src, mid, dest):
if n == 1:
dest.append(src.pop())
else:
# 先把 n - 1 个盘子挪到中间
move(n - 1, src, dest, mid)
# 再把剩下的最下面的大盘子挪动到目标
dest.append(src.pop())
# 现在问题回到开始,把 n - 1 个盘子挪动到目标
move(n - 1, mid, src, dest)
move(len(A), A, B, C)
简单的递归,挺直观的。