很多对汉诺塔的递归解法不理解的,并不是对递归算法本身的不理解,而是对函数定义时的参数意义没有完全理解。Python定义函数时的「位置参数」这个概念很好,意味着定义函数时设置的参数它只是占位置的,是形式上的参数。由于我们习惯上会按照汉诺塔的玩法把参数a,b,c和三根柱子对应起来,这就容易带来理解的问题。实际上在计算过程中,参数a,b,c会并不总是对应A柱,B柱和C柱,更多应该理解为起始柱、交换柱、目标柱,即每一步骤下,起始、交换和目标柱是变换的。分清这一点对理解算法和函数定义的参数意义,是有必要的。
- 1
- 2
宁静的波浪_mk5
还是懵