當前位置:首頁 » 編程語言 » 遞歸php

遞歸php

發布時間: 2022-01-09 05:32:48

php遞歸循環無限級,求解!

遞歸加入一個符號參數,如"空格",遞歸列表時把符號多連接上一倍,再輸出

<?php
$arr=array(
0=>array(
'name'=>'first',
'_child'=>array(
0=>array(
'name'=>'second',
'_child'=>array(
0=>array(
'name'=>'three',
'_child'=>array()
),
1=>array(
'name'=>'three',
'_child'=>array()
),
2=>array(
'name'=>'three',
'_child'=>array()
),
)
),
1=>array(
'name'=>'second',
'_child'=>array(
0=>array(
'name'=>'three',
'_child'=>array()
),
1=>array(
'name'=>'three',
'_child'=>array()
),
2=>array(
'name'=>'three',
'_child'=>array()
),
)
),
),
)
);

functionechoData($arr,$str){
$str.='&nbsp;';
foreach($arras$k=>$v){
echo$str.$v['name'].'<br>';
if(count($v['_child'])){
echoData($v['_child'],$str);
}
}
}
echoData($arr,'');
?>

② 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>";
}
}
}
}
}

③ php遞歸函數

很簡單,每個demo函數不考慮中間的自身遞歸,都輸出同樣的2個數$num.,這兩個數其實就是首尾對稱的的兩個數,

④ 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>

⑤ php遞歸的方法求和1+2+3+...+n

<?php
function add($n)
{
$result = 0;
for($i=1;$i<$n+1;$i++)
{
$result += $i;
}
return $result; 返回計算結果
}
echo add(5); //調用上面的函數
?>

⑥ PHP 遞歸的解釋

這個 是這樣的。 首先傳值10 進入函數 第一次函數還沒執行最後一行的echo $num." "; 就嵌套進了第二次函數 .....直到進入最後一層函數 執行完了 就會跳出執行上一層的 函數沒執行完的echo $num." "; 一直這樣 最後就 到了第一次函數的 echo $num." ";

⑦ 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;

⑧ 如何理解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怎麼遞歸

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

在一些復雜的系統中,要求對信息欄目進行無限級的分類,以增強系統的靈活性。那麼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遞歸能實現無限級分類嗎

數據量大就使用分頁和非同步查詢,一次查詢全部出來 ,內存肯定是吃不消的,運行時間也會比較久。

熱點內容
鏈接sqlserver 發布:2024-05-20 04:27:53 瀏覽:208
ftp文件伺服器擴容 發布:2024-05-20 04:22:21 瀏覽:645
linux心跳包 發布:2024-05-20 04:17:52 瀏覽:969
android打開資料庫文件 發布:2024-05-20 04:16:07 瀏覽:571
塑料解壓 發布:2024-05-20 03:50:09 瀏覽:75
python在伺服器端開發 發布:2024-05-20 03:31:17 瀏覽:66
編程大冒險 發布:2024-05-20 03:19:27 瀏覽:637
阿瓦隆九個人怎麼配置 發布:2024-05-20 02:57:47 瀏覽:758
sqlnotinexcept 發布:2024-05-20 02:53:10 瀏覽:342
激光切割編程教程難嗎 發布:2024-05-20 02:49:57 瀏覽:926