1. 麻煩看下這個php遞歸哪裡出錯了
錯誤提示是超出php最大遞歸次數。。。如果你認為你代碼沒錯
那就是你安裝的xdebug導致這個錯誤,
解決方法1:去除xdebug模塊,
解決方法2:在php.ini中修改xdebug.max_nesting_level = 200這個值,,,想寫多大就多大,只要你內存夠大
2. php遞歸最長遞歸次數
不一定是1000,可能多可能少,跟你的PHP版本還有安裝的操作系統有關,在到達一定次數的遞歸時候,php會自動殺掉這個function,而且不返回任何error,你這個連接錯誤應該是HTTP 500吧,那就是沒到php規定的遞歸次數,但是你伺服器的stack已經滿了,結果php進程崩潰,返回500。。
3. php中用遞歸函數計算出16的4次方
這個實際上是算組合數;
其中包含的有遞推公式:comm(n,k)=comm(n-1,k)+comm(n-1,k-1);
comm(n,0)=1,comm(n,n)=1為遞歸初始條件。
遞推公式和初始條件就是組合數的性質,相當於在算組合數,你把他逐步分解往回推就行了。
其實就我的理解,遞歸就是一種堆棧的形式,而且是一種循環。
如果還有不理解的可以問我。
4. 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);
5. 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>";
}
}
}
}
}
6. PHP多次遞歸返回值不一樣
因為$res是靜態變數,所以每次調用的結果是不同的。
7. PHP寫一個遞歸
你的題目好像說的不是很清楚, 我大概理解為了。是從 2014年10月9號 開始上班,上兩天班休息一天 的規律,來計算
method('2014-10-12');
functionmethod($date)
{
$date1=strtotime('2014-10-09');
$date2=strtotime($date);
if($date1>$date2){
echo'結束日期不能大於開始日期';
}
$days=ceil(($date2-$date1)/86400);
$cycle=floor($days/3);
$index=$days%3;
if($index==2){
$state='休息';
$work=$cycle*2+2;
}else{
$state='上班';
$work=$cycle*2+$index;
}
echo'從2014-10-09開始到'.$date.'(不包含這天)已經上班'.$work.'天,休息'.$cycle."天 ";
echo$date."當天是在'".$state."' ";
}
不知道這樣行不行
8. 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>
9. php 幾種常用的遞歸 無限極分類
/**
*遞歸實現無限極分類
*@param$array分類數據
*@param$pid父ID
*@param$level分類級別
*@return$list分好類的數組直接遍歷即可$level可以用來遍歷縮進
*/
functiongetTree($array,$pid=0,$level=0){
//聲明靜態數組,避免遞歸調用時,多次聲明導致數組覆蓋
static$list=[];foreach($arrayas$key=>$value){//第一次遍歷,找到父節點為根節點的節點也就是pid=0的節點
if($value['pid']==$pid){//父節點為根節點的節點,級別為0,也就是第一級
$value['level']=$level;//把數組放到list中
$list[]=$value;//把這個節點從數組中移除,減少後續遞歸消耗
unset($array[$key]);//開始遞歸,查找父ID為該節點ID的節點,級別則為原級別+1
getTree($array,$value['id'],$level+1);
}
}