A. php遞歸和迭代的區別
遞歸和迭代都是循環的一種。 簡單地說,遞歸是重復調用函數自身實現循環。迭代是函數內某段代碼實現循環,而迭代與普通循環的區別是:循環代碼中參與運算的變數同時是保存結果的變數,當前保存的結果作為下一次循環計算的初始值。 遞歸循環中,遇到滿足終止條件的情況時逐層返回來結束。迭代則使用計數器結束循環。當然很多情況都是多種循環混合採用,這要根據具體需求。 遞歸的例子,比如給定一個整數數組,採用折半查詢返回指定值在數組中的索引,假設數組已排序,為方便描述,假設元素都為正數,數組長度為二的整數倍。 折半查詢是查詢的一種,比遍歷所有元素要快很多。 int Find(int *ary,int index,int len,int value) { if(len==一)//最後一個元素 { if (ary[index]==value)return index;//成功查詢返回索引 return -一;//失敗,返回-一 } //如果長度大於一,進行折半遞歸查詢 int half=len/二; //檢查被查值是否大於上半部分最後一個值,如果是則遞歸查詢後半部分 if(value>ary[index+half-一]) return Find(ary,index+half,half,value); //否則遞歸查詢上半部分 return Find(ary,index,half,value); } 迭代經典例子就是實數的累加,比如計算一-一00所有實數的和。 int v=一; for(i=二;i<=一00;i++) { v=v+i;
B. php遞歸最長遞歸次數
不一定是1000,可能多可能少,跟你的PHP版本還有安裝的操作系統有關,在到達一定次數的遞歸時候,php會自動殺掉這個function,而且不返回任何error,你這個連接錯誤應該是HTTP 500吧,那就是沒到php規定的遞歸次數,但是你伺服器的stack已經滿了,結果php進程崩潰,返回500。。
C. php遞歸函數
很簡單,每個demo函數不考慮中間的自身遞歸,都輸出同樣的2個數$num.,這兩個數其實就是首尾對稱的的兩個數,
D. PHP 遞歸的解釋
這個 是這樣的。 首先傳值10 進入函數 第一次函數還沒執行最後一行的echo $num." "; 就嵌套進了第二次函數 .....直到進入最後一層函數 執行完了 就會跳出執行上一層的 函數沒執行完的echo $num." "; 一直這樣 最後就 到了第一次函數的 echo $num." ";
E. php中的遞歸函數詳解
foreach 寫在 html里,然後寫<?php foreach() {?> tr>td <?php } ?>,把要展示的內容寫td里,記得用php包起來,echo
F. php 遞歸問題
第一,沒有選擇資料庫,在連接資料庫後添加mysql_select_db("資料庫名");
第二、我感覺不代碼不全吧,因為我拷下來看了一下,少一},當然上面那個沒少,補充的少了。
第三、還有沒看出這個$ii是干什麼用的。
第四、沒感覺$selec=0與不等於0輸出有什麼不同。
第五、以後最好是把html代碼與程序分開寫。
因為不知道需求,只能根據你的程序簡單修改如下:
<?php
function TreeMenu($selec) {
$Conn=mysql_connect("localhost","kk","kk123");
mysql_select_db("資料庫名");
$ii=1;
$sql="select * from tvmenu where bid=".$selec;
$result=mysql_query($sql,$Conn);
$str = "";
while($row =mysql_fetch_array($result)) {
if($selec=0) {
$str = '<option value="'.$row['id'].'">'.$row['name'].'></option> ';
}else {
$str = '<option value="'.$row['id'].'">'.$row['name'].'></option> ';
}
echo $str;
$ii++;
TreeMenu($row['id']);
$ii--;
}
}
?>
<select name="bid" id="bid">
<?php
TreeMenu(0);
?>
</select>
G. 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);
H. 如何理解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)
I. PHP 如何遞歸演算法
一般來說,類似這種遍歷輸出所有文件,大多採用遞歸演算法,這樣程序顯得比較簡潔,其實際執行效率來說,並不見得比其他方法更好。
以下是示例:
function file_list($path)
{
if ($handle = opendir($path))//打開路徑成功
{
while (false !== ($file = readdir($handle)))//循環讀取目錄中的文件名並賦值給$file
{
if ($file != "." && $file != "..")//排除當前路徑和前一路徑
{
if (is_dir($path."/".$file))
{
// echo $path.": ".$file."<br>";//去掉此行顯示的是所有的非目錄文件
file_list($path."/".$file);
}
else
{
echo $path.": ".$file."<br>";
}
}
}
}
}
J. PHP遞歸問題
給前一行和後一行分別echo一句提示不就行了么。比如這樣:
function arrRecursion($data,$pid=0){
$arr=array();
foreach($data as $row){
if($row['pid']==$pid){
$row['child']=arrRecursion($data,$row['id']);
echo "start";
$arr[]=$row; //這一行能執行到么?
echo "end"; //或者你直接可以把$arr[]的值列印出來。
}
}
return $arr;
}