導航:首頁 > 編程語言 > php遞歸例子

php遞歸例子

發布時間:2025-09-15 03:56:03

Ⅰ 如何理解php中的遞歸函數 (詳細講解)

遞歸其實就是「一個函數的自調用」
在這個「自調用」的過程中,必須要有一個變化的「參數」,當這個「參數」達到你的期望值的時候,終止該「自調用」過程

拿樓主的程序來說

demo($n)內部又有調用demo($n-1),構成了「自調用」
且,$n又有一個「期望值」,即是$n>1,不滿足此條件時,該自調用終止

即是說,最後一個執行的demo是demo($n9-1),其中$n9=2,然後返回為1(因為執行了return 1)
則$n9*demo($n9-1)即等於 2*demo(2-1),又等於2*1=2;
則$n8*demo($n8-1)即等於 3*demo(3-1),又等於3*2=6;
則$n7*demo($n7-1)即等於 4*demo(4-1),又等於4*6=24;
……
依次類推

這樣想:
demo(1)是等於1,這個沒有疑問吧?
然後demo(2)等於2*demo(1)=2*1=2
然後demo(3)等於3*demo(2)=3*2=6
……
一直到demo(10)

Ⅱ php閫掑綊鏌ヨ涓嶄細錛岋紝奼傛暀銆傚氨鏄涓涓涓夌駭鍒嗙被浼犱釜ID鎵懼埌浠栫殑涓婄駭錛岃繕鏈夌埗綰с傘

榪欑嶇被鍨嬬殑鏁版嵁錛屼竴鑸鏁版嵁搴撲腑錛屼竴寮犺〃浼氭湁瀛樺湪涓や釜瀛楁碉紝涓涓鏄瀹冩湰韜玦d錛屽彟涓涓鏄瀹冪殑鐖剁駭parent_id銆
鏃㈢劧瑕佹壘鍒板畠鐨勭栫埗綰э紝sql璇鍙ヨ繖鏍峰啓錛
$id = empty($_POST['id'])?'':$_POST['id'];
$parent_id = get_parent_id($id);
$p_p_id = get_parent_id($parent_id);
function get_parent_id($id){
$sql = "select parent_id from ecs_table1 where id=" . $id錛
return($GLOBALS['db']->getone($sql ));
}
閫掑綊錛屽氨鏄鏍規嵁鐜版湁鐨剗d錛岄噸澶嶅彇銆
涓婇潰get_parent_id鍙鏄鑾峰彇鐖秈d錛屽綋鐒訛紝浣犲彲浠ュ啓涓涓鐩存帴鑾峰彇紲栫埗id鐨勫嚱鏁般
涓嶈繃錛岀幇鍦ㄥぇ閮ㄥ垎php緗戠珯錛岄兘鍙浼氭湁鑾峰彇鐖剁被鐨勫嚱鏁幫紝鎯砫iscuz錛宔cshop絳夈傝幏鍙栫栫埗id錛屽氨鏄涓嶆柇鐨勮幏鍙栬id鐨勭埗id銆

Ⅲ PHP中多維數組如何轉變成一維數組<求PHP高手!!!!!!!!!!!!!!>

在PHP中,可以使用遞歸函數將多維數組轉變為一維數組。以下是如何實現這一功能的詳細解答:

答案

  1. 使用遞歸函數

    • 定義一個遞歸函數,用於遍歷多維數組的每個元素。
    • 在函數中,檢查當前元素是否為數組。如果是,則遞歸調用該函數;如果不是,則將該元素添加到結果數組中。
  2. 示例代碼:“`php$array1 = array, 1 => array, 2 => array);

function array_multi2array { static $result_array = array; foreach { if ) { array_multi2array; } else { // 注意:這里直接以$key為索引添加到結果數組中,會丟失原多維數組中的鍵名信息 // 如果需要保留原鍵名信息,需要調整邏輯,例如使用多維鍵名作為新數組的鍵 $result_array[] = $value; // 僅添加值到結果數組 } } return $result_array; }

$array2 = array_multi2array; print_r; “`

  1. 注意事項

    • 鍵名丟失:上述代碼在將多維數組轉換為一維數組時,會丟失原多維數組中的鍵名信息,只保留值。如果需要保留這些鍵名信息,需要調整邏輯,例如將多維鍵名組合起來作為新數組的鍵。
    • 靜態變數:在遞歸函數中使用了靜態變數$result_array來存儲結果,以確保在遞歸過程中不會重置結果數組。
  2. 改進以保留鍵名信息

    • 如果需要保留原多維數組中的鍵名信息,可以修改遞歸函數,使其能夠處理並存儲這些鍵名。這通常涉及到更復雜的邏輯,例如使用多維鍵名作為新數組的鍵,或者創建一個包含鍵名和值的新數組結構。

通過上述方法,你可以將PHP中的多維數組有效地轉變為一維數組。

Ⅳ php左右值無限遞歸用在哪些地方

php左右值無限遞歸用在哪些地方
while語句中的表達式一般是關系表達或邏輯表達式,只要表達式的值為真(非0)即可繼續循環。
【例6.4】
main(){
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
while (n--)
printf("%d ",a++*2);
}
本常式序將執行n次循環,每執行一次,n值減1。循環體輸出表達式a++*2的值。該表達式等效於(a*2;a++)。
2) 循環體如包括有一個以上的語句,則必須用{}括起來,組成復合語句。
6.4 do-while語句
do-while語句的一般形式為:
do
語句
while(表達式);
這個循環與while循環的不同在於:它先執行循環中的語句,然後再判斷表達式是否為真, 如果為真則繼續循環;如果為假, 則終止循環。因此, do-while循環至少要執行一次循環語句。其執行過程可用下圖表示。
【例6.5】用do-while語句求 。
用傳統流程圖和N-S結構流程圖表示演算法,見圖:

Ⅳ PHP怎麼遞歸

下面我舉一個其他的例子,雖然不是族譜,但是原理都是一樣的。

在一些復雜的系統中,要求對信息欄目進行無限級的分類,以增強系統的靈活性。那麼PHP是如何實現無限級分類的呢?我們在本文中使用遞歸演算法並結合mysql數據表實現無限級分類。
遞歸,簡單的說就是一段程序代碼的重復調用,當把代碼寫到一個自定義函數中,將參數等變數保存,函數中重復調用函數,直到達到某個條件才跳出,返回相應的數據。
Mysql
首先我們准備一張數據表class,記錄商品分類信息。表中有三個欄位,id:分類編號,主鍵自增長;title:分類名稱;pid:所屬上級分類id。
class表結構:

CREATE TABLE IF NOT EXISTS `class` (
`id` mediumint(6) NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`pid` mediumint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入數據後,如圖:

如果要輸出json格式的數據,則可使用:

echo json_encode($list);

閱讀全文

與php遞歸例子相關的資料

熱點內容
驅動器加密保存文件 瀏覽:70
希沃白板如何安裝安卓應用 瀏覽:918
手機私密相冊哪個app最好 瀏覽:867
pythonopencvframe 瀏覽:862
達州加密自動監測網 瀏覽:342
高一數學必修三演算法 瀏覽:801
伺服器未響應怎麼解決手機 瀏覽:185
程序員回到古代 瀏覽:402
軟體合並一個文件夾 瀏覽:659
設置Android程序圖標 瀏覽:366
app哪個局 瀏覽:906
源碼編輯器中怎麼保存 瀏覽:464
python背景圖片代碼 瀏覽:450
3D卡片下載哪個App 瀏覽:533
如何用伺服器登錄微信 瀏覽:842
html5移動開發pdf下載 瀏覽:526
如何查看png圖片是否加密 瀏覽:823
php遞歸例子 瀏覽:193
伺服器參數配置未響應是什麼意思 瀏覽:606
pythonchardet模塊 瀏覽:754