php遞迴函式的問題,PHP遞迴函式的問題

時間 2022-04-24 20:10:59

1樓:匿名使用者

這個問題得從函式呼叫的時候記憶體中變化來理解,在一段php程式裡面,每次執行到函式部分時,記憶體都會開闢一片新的空間,(姑且稱之為空間吧),當遇到乙個函式開闢乙個空間的時候,也就是說$n=10的時候,先執行第乙個echo $n." ",這裡輸出乙個數字10吧,然後進入判斷語句,遇到test()函式,開闢乙個新空間,先不去看新空間裡面有什麼,下面的echo $n." ";肯定還是要執行的,現在等於說輸出了這樣的乙個結果10 test(9) 10,下面再看test9的情況,同理是不是輸出了10 9 test(8) 9 10,繼續執行下去,你會發現程式的結果就是你輸入的結果了。

希望對你有所幫助!

2樓:諫豆

因為你最後乙個echo $n的問題。

function test($n)

當==10的時候, 進入test(9), 這個函式執行完畢後,需要執行echo $n." ";;問題是test(9)也是個遞迴,所以一直到test(1)才可能執行 echo $n." ";, 依次往上返回。

3樓:匿名使用者

可以進去看一下。。。

關於php遞迴函式,我有些不明白

4樓:匿名使用者

你裡面的迴圈 應該不是 sum($a+$b-1) 這樣你第一次迴圈後的值是 sum(2,0)啊 不是1麼

你在 sum($a+$b-1) 這邊其實已經把 sum的 第二個值預設修改為了0~~ 雖然不知道為啥你沒有報錯 (可能你遮蔽了) 所以你用的$a=1 $b=0 相加自然等於1嘍

php遞迴數值型別問題,求高手解答

哈哈,這個問題讓我來給你解答吧。1 變數 afilearr不設定成static型別時,他只是函式中的乙個區域性變數,當函式遞迴發生時,函式每一次執行都會產生乙個名字為 afilearr的變數,但是他們在記憶體棧區存在的形式為不同的個體,最終由return返回出去,被上一級的 afilearr給pus...

遞迴函式返回值問題

第一句是不是應該寫成static int flag 0 啊,還有在if 內加上return 3.5 否則在當if語句成立執行時沒有返回值。如果你是用的tc的編譯器的話double型的有時候會出問題。建議適用vc6.0編譯執行 如果程式有返回值的話 只能是3.5 因為只有那乙個return語句所以 但...

用函式編漢諾塔問題的程式,C語言函式遞迴呼叫漢諾塔問題

include include include hanoil 子程式,實現將n個盤子從a移動到c void hanoil int n,char a,char b,char c 主程式 int main puts the steps of moving plates are hanoil n,a,b,...

新手的C 問題,關於字串逆序輸出,用遞迴函式

錯誤 convert 0 a o 這裡的字元陣列a並不是全域性變數,在函式中沒定義,額,而且拼寫錯誤,應該是零 0 而不是字母 o 修改 只要將char a 30 放到using namespace std 語句下面就行了。我暈 這什麼和什麼啊 你是要輸入一串數字 然後輸出一串數字麼 還有輸入也有問...

c語言函式的遞迴呼叫,C語言的函式巢狀呼叫與函式遞迴呼叫有什麼區別

是的,區域性變數會新定義一次,不過僅侷限於區域性變數 全域性變數和靜態變數都是全域性的,要是還沒學暫時不用管 並不能說是 同時 應該說是 同樣 時間上肯定是按照呼叫的先後順序的。遞迴確實會讓程式變慢,但只是相對於不需要遞迴的等價 而且原因也不是記憶體分配導致的,而是因為函式呼叫產生的。這個遞迴呼叫怎...