1樓:陽光上的橋
首先需要搞明白你的資料庫結構,你的檔案類別資料庫表 dangan_class 是不是三欄位:id、name、f_id,其中id為主鍵,f_id為自關聯的外來鍵,表示上一分類,0表示最上級分類,對不對?
樹狀列舉出所有類別的**可以這樣:
<?php
function zilei($fid,$level)mysql_free_result($query);
}zilei(0,0);
?>
為了結構簡單,我上面只做了刪除的**,修改的部分你自行加上,你也可以先除錯好了刪除的**再加。
**裡面的==是為了縮排,你可以換為全形的空白,或者其它符號。
2樓:匿名使用者
首先你這個是幾層巢狀關係?
例如是2層,需要父節點與子節點
第 1層 傳入引數 是父節點
第2層 傳入引數 是父節點與子節點
然後你再想遍歷的事情
3樓:
你的思路不太對,首先遞迴不是這麼用--!,然後取所有分類的話最好一次取出然後對陣列操作,生成樹形結構.
4樓:沃客吧
你的用法有問題,遞迴函式最後必須要返回,不能無限迴圈下去。
php 遞迴問題,想要將資料按照無限極分類的樣式顯示出來
php遞迴函式返回值問題
5樓:匿名使用者
看了一遍!沒看出什麼問題。最好貼出輸出效果,再看下!
6樓:匿名使用者
你沒發現嗎 你的get_str($id)值定義了乙個引數,而你遞迴的時候是傳遞2個引數的
第二個,遞迴的時候你沒有給返回值重新賦值累加,look ~~~like this
$str .= get_str($srow["id"],$leve+1);
7樓:
函式與自己**的函式都不一樣,怎麼能得到正確的結果?還有把資料表的結構和資料給出來才能給你分析嘛。
php遞迴函式的問題
8樓:匿名使用者
這個問題得從函式呼叫的時候記憶體中變化來理解,在一段php程式裡面,每次執行到函式部分時,記憶體都會開闢一片新的空間,(姑且稱之為空間吧),當遇到乙個函式開闢乙個空間的時候,也就是說$n=10的時候,先執行第乙個echo $n." ",這裡輸出乙個數字10吧,然後進入判斷語句,遇到test()函式,開闢乙個新空間,先不去看新空間裡面有什麼,下面的echo $n." ";肯定還是要執行的,現在等於說輸出了這樣的乙個結果10 test(9) 10,下面再看test9的情況,同理是不是輸出了10 9 test(8) 9 10,繼續執行下去,你會發現程式的結果就是你輸入的結果了。
希望對你有所幫助!
9樓:諫豆
因為你最後乙個echo $n的問題。
function test($n)
當==10的時候, 進入test(9), 這個函式執行完畢後,需要執行echo $n." ";;問題是test(9)也是個遞迴,所以一直到test(1)才可能執行 echo $n." ";, 依次往上返回。
10樓:匿名使用者
可以進去看一下。。。
php遞迴函式的問題解答
11樓:海獅
我覺得這個「--」最好少用。
現在很多程式設計教材對++、--的理解都是不準確的。
關鍵問題在於
當$num=4時
return $num+sum(--$num);
是希望表達 return 3+sum(3) 還是 return 4+sum(3)
實際上,這個語句的這兩個解釋都是正確的,你的理解可能和你的電腦理解不同。
--發生的時刻可能是整個語句的開始,也就是先$num=$num-1,然後再$num+sum($num);
--發生的時間只要早於sum($num)往裡面傳遞引數,並且在整個表示式的執行過程中就可以。
12樓:吐筆
童鞋你好,你會產生這樣的疑問是因為你沒有搞清楚函式引數的使用範圍,一級遞迴的過程,下來解析一下此函式的遞迴過程:
10 第一次遞迴 sum=10,先輸出10,執行遞迴後,demo裡面的 依然是10
9 第二次遞迴 sum=9,先輸出9,執行遞迴後,demo裡面的 依然是9
7 。
6 。
5 。
4 。
3 。
2 。
1 第10次遞迴 sum=1,先輸出1,執行遞迴後,demo裡面的 引數是1, 接著發生最後一次遞迴
0 第11次遞迴 demo裡面的引數值為0,故不再遞迴了,由於這次sum=0 故執行else echo "--------------------
";接著執行 echo $num."
"; 後返回sum=1 時 的 這裡接著執行: echo $num."";}
一次向後倒著執行 echo $num."
";} 故得到下面的結果!
--------------------------- 01
2345
678910
php遞迴無限分類的 如何統計總條數 以及對顯示的結果進行分頁?比如設定為每頁顯示10個 。
13樓:匿名使用者
每個節點都要記錄子節點的數量c。每新增乙個節點都要對各父和祖節點的子節點計數加1。這樣根節點會有總數的記錄。
這樣遞迴遍歷時也可以根據子節點數量c的來確定讀取的數量限制。比如 讀取條數計數<10 就繼續遞迴
在每個節點的表上 增加子節點的id集或計數,增加根節點到父節點路徑,會方便這些操作。
求教C語言的函式的遞迴呼叫,c語言函式遞迴呼叫看不懂了,求教
答案是16 fit 6 呼叫函式 fit 5 fit 4 繼續呼叫 fit 4 fit 3 fit 3 fit 2 繼續呼叫 fit 3 fit 2 fit 2 fit 1 fit 2 fit 1 fit 2 呼叫fit 2 fit 1 fit 2 fit 2 fit 1 fit 2 fit 1 f...
c語言遞迴求階乘,c語言怎麼用遞迴呼叫函式的方法求n的階乘?
問明 舉例 用遞迴方法求n include int main int n int y printf input a integer number scanf d n y fac n printf d d n n,y return 0 int fac int n int f if n 0 printf...
c語言12320用函式遞迴法
include include int jc int n return result int jcsum int n else void main int a int s,int c s是次 數,也是最大的 內數 c是初值容 include int main e n printf lf n e re...