python - 细数汉诺塔的 Action

标签 python python-3.x algorithm count global-variables

我在数汉诺塔的步数

In [4]: %paste      
count = 0
def hanoi(n, a, b, c):
    global count 
    if n == 1:
        count += 1
    else:
        hanoi(n - 1, a, c, b)
        hanoi(1, a, b, c)
        hanoi(n - 1, b, a, c)


hanoi(10, "A", "B", "C")
## -- End pasted text --

In [5]: print(count)
1023

上面的解决方案使用了global关键字,
不引入global怎么搞定?

最佳答案

通过一些重构使函数使用一个通用的 count 变量递归:

def hanoi(n, a, b, c):
    count = 0
    if n == 1:
        count += 1
    else:
        count += hanoi(n - 1, a, c, b)
        count += hanoi(1, a, b, c)
        count += hanoi(n - 1, b, a, c)
    return count

输出

>>> hanoi(10, "A", "B", "C")
1023

关于python - 细数汉诺塔的 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59139307/

相关文章:

python-3.x - 如何在Python中将十六进制值转换为 float

python - 生成伪随机数系列的算法,可重现知道初始种子

判断线程 "hotness"的算法

python3如何将unicode代码点转换为unicode char

python - 多态Python

python - Scrapy不同数量的url返回

python - 如何在 python 中将修饰的拉丁 unicode 字符转换为普通拉丁字符

algorithm - 每个递归算法都可以用动态规划改进吗?

python - 如何在 Python 中使用 "write to variable"而不是 "to file"

Python创建与数据帧长度匹配的重复值列