2015-08-31 206 views
0

嗨我需要一個在PHP遞歸函數的澄清,請參閱下面的我的代碼。同類產品1 2 3 4 5 5 4 3 2 遞歸函數返回反向值

<?php 
function test($count=1){ 
    if($count <5){ 
     echo $count; 
     test(++$count); 
    } 
    echo $count; 
} 
test(); 
?> 

對於上述功能我得到輸出我知道前6種元素的邏輯,但我不知道反向元素怎樣。請解釋我的邏輯

回答

1

每次迭代都會打印出其$count兩次;一次「在途中」和一次「在途中」。你有兩個echo $count陳述;一個在調用新的test()之前被調用,一旦在遞歸返回後調用它。由於$count不是全局變量,因此每次迭代將保留其自己的值$count

+0

HI FSQ,我已宣佈$算作全球以上的功能。但它仍然顯示相同的結果。 – SKP

+0

您還應該刪除第二個'echo $ count'。還要記住'++ $ count'修改'$ count'的值。所以對於'test()'其中'$ count = 4',你的第二個回聲'$ count'將打印出5個。 –

1

後半部分輸出來自第二個echo語句。 您可以添加標記到echo s到做事情很明顯:

<?php 
function test($count=1){ 
    if($count <5){ 
     echo "A:$count "; 
     test(++$count); 
    } 
    echo "B:$count "; 
} 
test(); 
?> 
// will print A:1 A:2 A:3 A:4 B:5 B:5 B:4 B:3 B:2 

下面是一個僞調用圖,顯示echo順序:

test(1) { 
    echo A:1 
    test(2) { 
    echo A:2 
    test(3) { 
     echo A:3 
     test(4) { 
     echo A:4 
     test(5) { 
      echo B:5 
     } 
     echo B:5 
     } 
     echo B:4 
    } 
    echo B:3 
    } 
    echo B:2 
} 
+0

嗨,我只得到這個輸出1 2 3 4 5 5 4 3 2 – SKP

+0

@SKP我已經糾正了我的答案 – Kita