擅长:python、mysql、java
<h2>简短的回答</h2>
<p>每次Python“看到”<code>fibonacci()</code>时,它都会进行另一个函数调用,并且在完成该函数调用之前不会进一步进行。</p>
<h2>示例</h2>
<p>所以假设它在计算<code>fibonacci(4)</code>。</p>
<p>一旦到达<code>return fibonacci(number-1) + fibonacci(number-2)</code>行,它就会“看到”调用<code>fibonacci(number-1)</code>。</p>
<p>所以现在它运行<code>fibonacci(3)</code>-它还没有看到<code>fibonacci(number-2)</code>。要运行<code>fibonacci(3)</code>,它必须找出<code>fibonacci(2)+fibonacci(1)</code>。再次,它运行它看到的第一个函数,这次是<code>fibonacci(2)</code>。</p>
<p>现在,当运行<code>fibonacci(2)</code>时,它终于到达一个基本情况。它计算<code>fibonacci(1)</code>,返回<code>1</code>,然后,它第一次可以继续执行<code>+ fibonacci(number-2)</code>调用的<code>fibonacci()</code>部分。<code>fibonacci(0)</code>返回<code>0</code>,然后让<code>fibonacci(2)</code>返回<code>1</code>。</p>
<p>既然<code>fibonacci(3)</code>已经获得了从<code>fibonacci(2)</code>返回的值,那么它可以继续计算<code>fibonacci(number-2)</code>(<code>fibonacci(1)</code>)。</p>
<p>此过程将继续,直到所有内容都已计算完毕,并且<code>fibonacci(4)</code>可以返回<code>3</code>。</p>
<p>要查看整个评估过程,请按照此图中的箭头操作:</p>
<p><img src="https://i.stack.imgur.com/PSCLH.png" alt="Enter image description here"/></p>