遞歸函數(shù),遞歸只是一個名字,而遞歸函數(shù)的規(guī)定:函數(shù)體內(nèi)調(diào)用函數(shù)自己。
這需要一定的思維理解深度,本章學(xué)習(xí)過程當(dāng)中,如果你實在是有思維無法跟上的地方,可以跳過本章不用學(xué)習(xí)。等有了知識積累可以再看看!
我們來寫一個簡單的遞歸代碼,讓函數(shù)自己調(diào)用自己:
<?php $n = 2; function dg( $n ){ echo $n.'<br />'; $n = $n - 1; if($n > 0){ //在函數(shù)體內(nèi)調(diào)用了dg自己喲 dg($n); }else{ echo '--------------'; } echo '我是最后一個哦!' . $n . '<br />'; } dg($n); ?>
我們來仔細(xì)推理一次:
第一次調(diào)用dg(),將數(shù)字$n = 2傳到dg中,先顯示出來了2
然后將$n - 1 $n的值為了1
接著判斷$n 是否大于0,肯定是大于0的,所以調(diào)用遞歸自己,再把自己執(zhí)行一次。
而第二次在執(zhí)行自己dg()的時候,而最下面的 echo '我是最后一個哦!' . $n . '; 還沒有執(zhí)行到。等待執(zhí)行完成后再來執(zhí)行
$n此時等于1 ,所以顯示出來1。
$n把自己減了一次,$n的結(jié)果為0
$n大于0肯定不成立的,所以顯示了一條:"--------------"
而這個時候該執(zhí)行:echo ''我是最后一個哦!' . $n . ';
第二次執(zhí)行dg()執(zhí)行完成。第一次dg()的代碼還沒執(zhí)行完,將第4點中的余下代碼執(zhí)行完。
沒有看懂的小伙伴把代碼考下去在本地運行學(xué)習(xí)學(xué)習(xí)也可以。