gpt4 book ai didi

python - 使用堆栈的 Hanoi Python 解决方案的递归塔

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:09 25 4
gpt4 key购买 nike

我正在尝试使用堆栈解决汉诺塔问题。这是我的代码:

Init_stack = [0,1,2,3]
Buffer_stack = []
Final_stack = []
n = len(Init_stack)
def move_disks(Init_stack, Buffer_stack, Final_stack, n):
if n == 0:
return
elif n == 1:
Final_stack.append(Init_stack.pop())
elif n == 2:
Buffer_stack.append(Init_stack.pop())
Final_stack.append(Init_stack.pop())
Final_stack.append(Buffer_stack.pop())
else:
move_disks(Init_stack, Final_stack, Buffer_stack, n-1)
Final_stack.append(Init_stack.pop())
move_disks(Buffer_stack, Init_stack, Final_stack,n-1)

当 Init_stack 的大小很小时,比如 < 10,这工作得很好。但是当我在大小为 100 的 Init_stack 上运行这段代码时,程序需要很长时间才能完成。你能告诉我为什么需要这么长时间吗?

最佳答案

汉诺塔需要 (2^n)-1 移动,其中 n 是环数。即使是极其高效的解决方案也需要很长时间才能完成 Python 中的许多操作。

(2^10)-1 等于 1023(每个计算机科学家都知道),但是 (2^100)-1 是一个 31 位十进制数.

关于python - 使用堆栈的 Hanoi Python 解决方案的递归塔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31495780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com