def hanoi(n, A, C, B):
def print_move(A, C):
print(A, '-->', C)
if n == 1:
print_move(A, C)
else:
hanoi(n-1, A, B, C)
hanoi(1, A, C, B)
hanoi(n-1, B, C, A)
这是一个解决河内问题塔的程序,但我根本不理解。
程序什么时候结束?
当n-1变为1时,不应因为条件而陷入无限循环?
程序将按预期工作,直到河内(1,A,C,B),因为它将打印A - >的条件。 B,但不应该打印A - > C 1
任何递归函数都可以影响其他函数(hanoi2将n设置为1,但hanoi3也会使用1或n-1吗?)哪些行将按顺序执行?
答案 0 :(得分:0)
该程序将在n == 1
时结束,因为那时它将使用此案例:
if n == 1:
print_move(A, C)
而不是这种情况:
else:
hanoi(n-1, A, B, C)
hanoi(1, A, C, B)
hanoi(n-1, B, C, A)
更正式地说,我们知道它最终会到达n == 1
,因为n
在每次递归调用中都严格地转向这种情况。因此,n
变量对于此递归是MinTTY Wiki, article Tips: Starting in a particular directory。
答案 1 :(得分:-1)
这是解决河内问题塔的递归算法。