擅长:python、mysql、java
<p>要在设计中有效地使用递归,<em>可以通过假设已经解决了问题来解决问题。
当前问题的心理跳板是“如果我能计算出n-1个字符的排列,那么我就可以依次选择每个字符并附加其余n-1个字符的排列来计算n个字符的排列,我假装我已经知道该怎么做了”。</p>
<p>然后你需要一种方法来完成所谓的“触底”递归。因为每个新的子问题都比上一个小,也许你最终会得到一个你真正知道如何解决的子问题。</p>
<p>在这种情况下,你已经知道了一个角色的所有排列-它只是一个角色。所以你知道如何求解n=1,对于每一个数,这个数比你能求解的数多一个,你就完成了。这与所谓的数学归纳法密切相关。</p>