听慕课学习到下面的汉诺塔问题,但是不太理解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
如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
看起来代码中并没有给这三个变量直接赋值
但是你没发现每次递归的时候,参数传入的顺序都变了吗
那么形参和实参的位置变了,就相当于给每个参数重新赋值了