gpt4 book ai didi

php - 递归函数 block 的最后一条语句执行了多少次?

转载 作者:行者123 更新时间:2023-12-03 20:45:24 26 4
gpt4 key购买 nike

考虑下面演示递归的代码片段:

<?php
function test() {
static $count = 0;

$count++;
echo $count."<br>";
if($count < 10) {
test();
}
echo "Count Value : ".$count--;
}

test();
?>

以上代码输出如下:

1
2
3
4
5
6
7
8
9
10
Count Value : 10
Count Value : 9
Count Value : 8
Count Value : 7
Count Value : 6
Count Value : 5
Count Value : 4
Count Value : 3
Count Value : 2
Count Value : 1

我期望函数 test() 的最后一个代码语句,即 echo "Count Value : ".$count--; 只会在 if 时执行一次条件在 $count = 10; 时返回 false,一切都将完成。

但出乎意料的是,我让它执行了十次,同时变量 $count 的值递减。我不明白这是怎么回事?代码流是如何意外地在这里被操纵的?

由于递归函数调用是在 if 条件内进行的,所以即使在 if 条件失败后,它又怎么会被后续调用 10 次

请解释一下。

注意:我没有忘记添加 else 并且我不想要它。只需解释为什么以及如何仅在打印 nos 后才执行最后一条语句。从 1 到 10,并且仅在 if 条件失败之后。当 if 条件返回 true 时,它​​没有被执行。怎么办?

最佳答案

我想你忘记了 else。

<?php
function test() {
static $count = 0;

$count++;
echo $count."<br>";
if($count < 10) {
test(); // when this call is made, all the code bellow waits for it to return
} else {
echo "Count Value : ".$count--;
}
}

test();
?>

每次调用 test() 时,在 if 条件内,执行都会停止,直到新调用的 test() 返回。 test() 函数仅在 $count >= 10 时返回。这意味着所有挂起的函数调用将继续。 What is a RECURSIVE Function in PHP?

你的代码可以翻译成这样;

<?php
function test() {
static $count = 0;

$count++;
echo $count."<br>";
if($count < 10) {

static $count = 1;

$count++;
echo $count."<br>";
if($count < 10) {

static $count = 2;

$count++;
echo $count."<br>";
if($count < 10) {


// ... the code repeats until the point when $count = 9

} else {
echo "Count Value : ".$count--;
}

} else {
echo "Count Value : ".$count--;
}


} else {
echo "Count Value : ".$count--;
}
}

test();
?>

关于php - 递归函数 block 的最后一条语句执行了多少次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47302907/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com