溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php中構(gòu)成遞歸需具備的條件有哪些

發(fā)布時(shí)間:2020-11-10 10:37:55 來源:億速云 閱讀:138 作者:小新 欄目:編程語言

這篇文章主要介紹了php中構(gòu)成遞歸需具備的條件有哪些,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

  程序調(diào)用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設(shè)計(jì)語言中廣泛應(yīng)用。 一個(gè)過程或函數(shù)在其定義或說明中有直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問題層層轉(zhuǎn)化為一個(gè)與原問題相似的規(guī)模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復(fù)計(jì)算,大大地減少了程序的代碼量。遞歸的能力在于用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。

遞歸,就是在運(yùn)行的過程中調(diào)用自己。

構(gòu)成遞歸需具備的條件:

  函數(shù)嵌套調(diào)用過程示例

   1. 子問題須與原始問題為同樣的事,且更為簡單;

   2. 不能無限制地調(diào)用本身,須有個(gè)出口,化簡為非遞歸狀況處理。

  在數(shù)學(xué)和計(jì)算機(jī)科學(xué)中,遞歸指由一種(或多種)簡單的基本情況定義的一類對象或方法,并規(guī)定其他所有情況都能被還原為其基本情況。

  例如,下列為某人祖先的遞歸定義:

  某人的雙親是他的祖先(基本情況)。某人祖先的雙親同樣是某人的祖先(遞歸步驟)。斐波納契數(shù)列(Fibonacci Sequence),又稱黃金分割數(shù)列,指的是這樣一個(gè)數(shù)列:1、1、2、3、5、8、13、21..... I [1]

斐波納契數(shù)列是典型的遞歸案例:

  遞歸關(guān)系就是實(shí)體自己和自己建立關(guān)系。

   Fib(0) = 1 [基本情況] Fib(1) = 1 [基本情況] 對所有n > 1的整數(shù):Fib(n) = (Fib(n-1) + Fib(n-2)) [遞歸定義] 盡管有許多數(shù)學(xué)函數(shù)均可以遞歸表示,但在實(shí)際應(yīng)用中,遞歸定義的高開銷往往會(huì)讓人望而卻步。例如:

   階乘(1) = 1 [基本情況] 對所有n > 1的整數(shù):階乘(n) = (n * 階乘(n-1)) [遞歸定義] 一種便于理解的心理模型,是認(rèn)為遞歸定義對對象的定義是按照“先前定義的”同類對象來定義的。例如:你怎樣才能移動(dòng)100個(gè)箱子?答案:你首先移動(dòng)一個(gè)箱子,并記下它移動(dòng)到的位置,然后再去解決較小的問題:你怎樣才能移動(dòng)99個(gè)箱子?最終,你的問題將變?yōu)樵鯓右苿?dòng)一個(gè)箱子,而這時(shí)你已經(jīng)知道該怎么做的。

   如此的定義在數(shù)學(xué)中十分常見。例如,集合論對自然數(shù)的正式定義是:1是一個(gè)自然數(shù),每個(gè)自然數(shù)都有一個(gè)后繼,這一個(gè)后繼也是自然數(shù)。

德羅斯特效應(yīng)

  德羅斯特效應(yīng)是遞歸的一種視覺形式。圖中女性手持的物體中有一幅她本人手持同一物體的小圖片,進(jìn)而小圖片中還有更小的一幅她手持同一物體的圖片,依此類推。

  又例如,我們在兩面相對的鏡子之間放一根正在燃燒的蠟燭,我們會(huì)從其中一面鏡子里看到一根蠟燭,蠟燭后面又有一面鏡子,鏡子里面又有一根蠟燭……這也是遞歸的表現(xiàn)。

簡單應(yīng)用

function loop(){
 static $i = 0;
 echo $i.' ';
 $i++;
 if($i<10){
     loop();
 }
}
loop();//輸出 0 1 2 3 4 5 6 7 8 9

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享php中構(gòu)成遞歸需具備的條件有哪些內(nèi)容對大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI