【发布时间】:2022-09-27 16:58:03
【问题描述】:
def move_disks(n, from_tower, to_tower, aux_tower):
result = []
###BEGIN SOLUTION
# base case
if n == 1:
return [f\"Move disk {n:} from {from_tower:} to {to_tower:}.\"]
# recursive case
else:
# move n-1 disks from src to an aux tower
result = move_disks(n-1, from_tower, aux_tower, to_tower)
# move nth disk src to dest tower
result += [f\"Move disk {n:} from {from_tower:} to {to_tower:}.\"]
# move n-1 disks from aux to dest
result += move_disks(n-1, aux_tower, to_tower, from_tower)
###END SOLUTION
return result
#Test cases
result = move_disks(3, \"A\", \"B\", \"C\")
print(result)
assert result == [\"Move disk 1 from A to B.\", \"Move disk 2 from A to C.\", \"Move disk 1 from B to C.\", \"Move disk 3 from A to B.\", \"Move disk 1 from C to A.\", \"Move disk 2 from C to B.\", \"Move disk 1 from A to B.\"]
我的疑问是这个。为什么在 move_disks (在下图中) n=1 时迭代,对于 \"from_tower,to_tower 和 aux_tower\" 分别是 A,B,C。我觉得应该分别是A,C,B。
请参考下面的图片来查看 python 导师可视化。
标签: python algorithm recursion data-structures