Ⅰ 如何理解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中,可以使用遞歸函數將多維數組轉變為一維數組。以下是如何實現這一功能的詳細解答:
答案:
使用遞歸函數:
示例代碼:“`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; “`
注意事項:
改進以保留鍵名信息:
通過上述方法,你可以將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);