2015-08-31 158 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