python汉诺塔问题解答(初学者)

听慕课学习到下面的汉诺塔问题,但是不太理解src,dst,mid三个参数,问题是在程序运行过程中三个参数是变化的吗,为什么会变?

# hanoi.py
count = 0
def hanoi(n, src, dst, mid):
    global count
    if n == 1 :
        print("{}:{}->{}".format(1,src,dst))
        count += 1
    else :
        hanoi(n-1, src, mid, dst)
        print("{}:{}->{}".format(n,src,dst))
        count += 1
        hanoi(n-1, mid, dst, src)
hanoi(2, "A", "C", "B")
print(count)

运行结果
1:A->B
2:A->C
1:B->C
3

对于你这个问题可以参考如下链接:

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

看起来代码中并没有给这三个变量直接赋值
但是你没发现每次递归的时候,参数传入的顺序都变了吗
那么形参和实参的位置变了,就相当于给每个参数重新赋值了