嗨我需要一個在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種元素的邏輯,但我不知道反向元素怎樣。請解釋我的邏輯
嗨我需要一個在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種元素的邏輯,但我不知道反向元素怎樣。請解釋我的邏輯
每次迭代都會打印出其$count
兩次;一次「在途中」和一次「在途中」。你有兩個echo $count
陳述;一個在調用新的test()
之前被調用,一旦在遞歸返回後調用它。由於$count
不是全局變量,因此每次迭代將保留其自己的值$count
後半部分輸出來自第二個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
}
HI FSQ,我已宣佈$算作全球以上的功能。但它仍然顯示相同的結果。 – SKP
您還應該刪除第二個'echo $ count'。還要記住'++ $ count'修改'$ count'的值。所以對於'test()'其中'$ count = 4',你的第二個回聲'$ count'將打印出5個。 –