php遞迴分析

2021-07-25 19:14:51 字數 1279 閱讀 6484

舉乙個通俗的例子:

有乙個8倆重的蘋果要你切成重量相等的若干份,每乙份的重量不能大於1倆。你肯定會想到這樣做: 1.

第一刀先把乙個蘋果切成重量均等的2份a1和a2; 2.

再把其中的乙份a1切成重量均等的兩份a11和a12, 把a2切成均等的兩份a21和a22; 3.

把a11切成均等的兩份…… 4.

直到每一小份都小於等於1倆為止。

以上的例子就是遞迴乙個模型,把乙個大的事物化成若干個小的事物,每一次使用的方法都相同。

程式自身

呼叫自身的程式設計技巧稱為

遞迴( recursion)

。遞迴有直接遞迴和間接遞迴

•直接遞迴:函式在執行過程中呼叫本身。

•間接遞迴:函式在執行過程中呼叫其它函式再經過這些函式呼叫本身。

遞迴有四個特性: 1.

必須有可最終達到的終止條件,否則程式將陷入無窮迴圈; 2.

子問題在規模上比原問題小,或更接近終止條件; 3.

子問題可通過再次遞迴呼叫求解或因滿足終止條件而直接求解; 4.

子問題的解應能組合為整個問題的解。

上面的例子中也滿足以上的四點性質:

(1).

終止條件是

每乙份的重量不能大於1倆;(2).

每一次切的大小都比上一次小;

(3).

每一次切的方式都相同,所以子問題可遞迴呼叫;

(4).最終切成的每一小份也就是要求的解。

if($w<1)

else}

結果:

第1次切割,每份重量是:7.5

第2次切割,每份重量是:3.75

第3次切割,每份重量是:1.875

第4次切割,每份重量是:0.9375

已經切完了

再舉乙個通俗的例子:試求等差數列的和:1+2+3+4+...+98+100;

/**

* 等差數列求和

* @param [int] $n [第乙個數]

* @param [int] $m [第二個數]

*/function add($n,$m)

echo add(1,100);

PHP 遞迴效率分析

而且是差了3倍的效率。所以,php中的遞迴一定要小心的對待。最近寫了乙個快速排序的演算法,發現php中的遞迴效率不能一刀切,在各種不同的伺服器中,可能會表現不一樣。複製 如下 function qsort arr 採用遞迴演算法的快速排序。param array arr 要排序的陣列 param i...

php遞迴使用示例 php遞迴函式

遞迴獲得角色id字串 function exploderole roleobj,resultstr else exploderole childroleobj,resultstr 遞迴獲取級聯角色資訊陣列 function makerolerelation roleobjarr 程式設計客棧 通過父...

python 遞迴分析

這段時間用python寫了乙個爬衝指令碼,在抓取頁面採用廣度優先遍歷抓取。但是當遍歷到900多時就會出現莫名其妙的錯誤,通過pdb除錯發現是 runtimeerror maximum recursion depth exceeded 在網上查了,發現python預設的遞迴深度是很有限的,大概是900...