|
发表于 2022-8-3 17:34:15
|
显示全部楼层
如果把这个递归函数的形参名称改的清晰一些可能就更容易理解了。实际上应该是
- def haoni(n,source,relay,destination):
- pass # 内容省略
复制代码
haoni 函数输出把 n 个(盘?)从 source 通过 relay 中转(如果需要)移动到 destination 的过程。对于只有一个盘的情况,直接从 source 移动到 destination 即可;对于不止一个的情况,我们可以首先将 n - 1 个盘从 source 移动到 relay (这里可以使用 destination 作为中转),然后把一个盘(剩下的,第 n 个盘)从 source 直接移动到 destination ,最后把先前临时移动到 relay 的所有盘(共 n - 1 个)移动到 destination (现在可以通过 source 中转)即完成全部 n 盘个以 relay 为中转从 source 移动到 destination 的工作。注意到上述过程中包含的两次移动 n - 1 个盘的操作同样满足 haoni 函数的定义,因此可以使用之。这一过程也就是代码第 5 到 7 行所做的事情。 |
|