您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)php遞歸函數(shù)是什么,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
遞歸就是一個(gè)函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進(jìn)入新的一層。遞歸函數(shù)必須有結(jié)束條件。 下面跟著小編一起來(lái)學(xué)習(xí)遞歸吧。
遞歸思想就是,把一個(gè)相對(duì)復(fù)雜的問題(原始問題)轉(zhuǎn)化為一個(gè)個(gè)與原問題相似的規(guī)模較小的問題(子問題)來(lái)解決,等一個(gè)個(gè)小問題解決了,最終的大問題自然就解決了。遞歸方法只需少量的程序就可描述出解題過程所需要的多次重復(fù)計(jì)算,大大減少程序的代碼量。當(dāng)然,遞歸函數(shù)也不完美,有一定的缺點(diǎn),那就是遞歸函數(shù)的運(yùn)行效率不高。
在 PHP 中遞歸層數(shù)也不是沒有限制的,這與程序的內(nèi)存限額有關(guān),PHP5 允許一個(gè)程序使用 128M 的內(nèi)存,因此當(dāng)遞歸層數(shù)過大導(dǎo)致 128M 內(nèi)存耗盡時(shí),程序就會(huì)產(chǎn)生一個(gè)致命錯(cuò)誤并退出。PHP7 允許使用 256M 的內(nèi)存。
遞歸函數(shù)就是在函數(shù)內(nèi)部自己調(diào)用自己。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進(jìn)入新的一層。遞歸函數(shù)必須有結(jié)束條件。當(dāng)函數(shù)在一直遞推,直到遇到墻后返回,這個(gè)墻就是結(jié)束條件。所以遞歸要有兩個(gè)要素,結(jié)束條件與遞推關(guān)系。
注:函數(shù)在被調(diào)用執(zhí)行的過程中會(huì)在內(nèi)存里面分配空間用于存儲(chǔ)臨時(shí)數(shù)據(jù),那么函數(shù)在執(zhí)行過程中默認(rèn)之間是沒有聯(lián)系的(除了靜態(tài)變量,按引用傳,全局變量)。里面的變量默認(rèn)都是局部變量,相互之間沒有影響。我們來(lái)看一個(gè)例子加深印象:
<?php function demo($num){ // if($num == 1 || $num == 2){ return 1; }else{ return demo($num - 1) + demo($num - 2); } } echo '數(shù)列第 10 位是:'.demo(10);//數(shù)列第 10 位是:55 ?>
這個(gè)例子是不是有點(diǎn)眼熟,這就是斐波那契數(shù)列,我們計(jì)算斐波那契數(shù)列的時(shí)候,如果使用其他方法相較而言還是有一定難度的,但是使用遞歸函數(shù),效率就高了很多。
關(guān)于“php遞歸函數(shù)是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。