阅读量:0
下面是一个Python的汉诺塔问题的递归解决方案的代码示例:
def hanoi(n, source, target, auxiliary): if n > 0: # 将 n-1 个盘子从源柱移动到辅助柱 hanoi(n-1, source, auxiliary, target) # 将最底下的盘子从源柱移动到目标柱 print(f"Move disk {n} from {source} to {target}") # 将 n-1 个盘子从辅助柱移动到目标柱 hanoi(n-1, auxiliary, target, source) # 测试 hanoi(3, 'A', 'C', 'B')
这段代码中,hanoi
函数接受四个参数:整数n
表示盘子的数量,字符串source
表示源柱,字符串target
表示目标柱,字符串auxiliary
表示辅助柱。函数使用递归的方式解决汉诺塔问题。
在hanoi
函数中,首先检查n
是否大于0。如果是,则递归调用函数本身:
- 第一次递归调用将前 n-1 个盘子从源柱移动到辅助柱(
source
到auxiliary
)。 - 打印移动最底下的盘子从源柱移动到目标柱(
source
到target
)的操作。 - 第二次递归调用将前 n-1 个盘子从辅助柱移动到目标柱(
auxiliary
到target
)。
最后,我们调用hanoi
函数来测试代码,并将source
设置为"A",target
设置为"C",auxiliary
设置为"B"。