NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# 递归 ``` <pre class="calibre18">``` <span class="token5">function</span> <span class="token4">demo</span><span class="token3">(</span>$a<span class="token3">)</span><span class="token3">{</span> echo $a<span class="token3">;</span> <span class="token5">if</span><span class="token3">(</span>$a<span class="token1">>=</span><span class="token6">1</span><span class="token3">)</span><span class="token3">{</span> <span class="token4">demo</span><span class="token3">(</span>$a<span class="token1">-</span><span class="token6">1</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> echo $a<span class="token3">;</span> <span class="token3">}</span> <span class="token4">demo</span><span class="token3">(</span><span class="token6">2</span><span class="token3">)</span><span class="token3">;</span><span class="token">//输出210012</span> ``` ``` 解析: ``` <pre class="calibre10">``` <span class="token">//第一次先执行demo(2);</span> <span class="token5">function</span> <span class="token4">demo</span><span class="token3">(</span>$a<span class="token3">)</span><span class="token3">{</span> echo $a<span class="token3">;</span> <span class="token">//输出2</span> <span class="token5">if</span><span class="token3">(</span>$a<span class="token1">>=</span><span class="token6">1</span><span class="token3">)</span><span class="token3">{</span><span class="token6">2</span><span class="token1">></span><span class="token6">1</span> 成立 执行<span class="token5">if</span>里的语句块 <span class="token4">demo</span><span class="token3">(</span>$a<span class="token1">-</span><span class="token6">1</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//demo(2-1) 等同demo(1) </span> <span class="token3">}</span> echo $a<span class="token3">;</span><span class="token">//上面程序执行demo(1)去了。这里会等待demo(1)执行完才会输出</span> <span class="token3">}</span> <span class="token">//再看demo(1)</span> <span class="token5">function</span> <span class="token4">demo</span><span class="token3">(</span>$a<span class="token3">)</span><span class="token3">{</span> echo $a<span class="token3">;</span> <span class="token">//输出1</span> <span class="token5">if</span><span class="token3">(</span>$a<span class="token1">>=</span><span class="token6">1</span><span class="token3">)</span><span class="token3">{</span><span class="token6">1</span><span class="token1">=</span><span class="token6">1</span> 成立 执行<span class="token5">if</span>里的语句块 <span class="token4">demo</span><span class="token3">(</span>$a<span class="token1">-</span><span class="token6">1</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//demo(1-1) 等同demo(0) </span> <span class="token3">}</span> echo $a<span class="token3">;</span><span class="token">//上面程序执行demo(0)去了。这里会等待demo(0)执行完才会输出</span> <span class="token3">}</span> <span class="token">//再看demo(1)</span> <span class="token5">function</span> <span class="token4">demo</span><span class="token3">(</span>$a<span class="token3">)</span><span class="token3">{</span> echo $a<span class="token3">;</span> <span class="token">//输出0</span> <span class="token5">if</span><span class="token3">(</span>$a<span class="token1">>=</span><span class="token6">1</span><span class="token3">)</span><span class="token3">{</span><span class="token6">0</span><span class="token1"><</span><span class="token6">1</span> 不成立不执行<span class="token5">if</span>语句块 <span class="token4">demo</span><span class="token3">(</span>$a<span class="token1">-</span><span class="token6">1</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> echo $a<span class="token3">;</span><span class="token">//输出0 这里demo(0)执行完了,就会执行demo(1)伪执行完的代码</span> <span class="token3">}</span> ``` ``` ![](https://img.kancloud.cn/73/8c/738cddc1fb8de8754504a0aefd2f744f_609x540.PNG)