嗨我需要一个在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个。 –