擅长:python、mysql、java
<p>一种递归算法。在</p>
<p>这里的问题是将一个数字转换成给定符号中的字符串。在</p>
<p>“储存”数据的功能实际上是这样的:</p>
<pre><code>push(d1)
push(d2)
...
push(dn-1)
push(dn)
res+=pop(dn)
res+=pop(dn-1)
...
res+=pop(d2)
res+=pop(d1)
</code></pre>
<p>有效地:</p>
^{pr2}$
<p>即,处理特定数据块的步骤包含处理其余数据的所有步骤(每个数据块的处理方式相同)。在</p>
<p>如果<em>函数</em>是递归的(因为它们倾向于在狭义上将该术语应用于子例程),但它实现的<em>算法</em>肯定是递归的。在</p>
<hr/>
<p>为了让您更好地感受到差异,下面是一个针对同一问题的迭代解决方案:</p>
^{3}$
<p>如您所见,这种方法的内存占用要低得多,因为它不需要存储任务。这就是区别:迭代算法使用相同的状态实例来执行每一步,而递归算法则为每个步骤创建一个新实例,如果仍然需要旧的实例,则必须将其存储起来。在</p>