求助,这段php代码为什么会陷入死循环

2025-03-20 16:06:12
推荐回答(5个)
回答1:

这不是一个死循环, 是9个死循环。

function fun($i=0){
$i++;
echo $i.'
';
while($i<10){       // 首次调用这个函数的时候,这里已经是一个死循环了,
fun($i);    // 在这里, $i 永远是1,所以永远小于10
}
}

fun();

执行第二次的时候,$i 永远是2, 还是小于10,又是一个死循环, 以此类推。

如果想输出1到10你不用写这么复杂的, 这样写即可:

function outNumber() {
static $number = 1;
echo $number;
$number += 1;
if ($number > 10) return;
outNumber();
}


outNumber();

回答2:

如果要输出1-10则将while改为if。
递归函数需要有退出递归的条件判断,不然就会出现死循环
因为while是一个循环语句,$i=10后会无限执行while循环

回答3:

谁教你这样写代码的,另外你的$i++只执行一次,没有写到while循环,fun函数你这样在while调用,很容易会崩坏服务器的

function fun($i=0){
    while($i<10){
        $i++;
        echo $i.'
';
    }
}
fun();

回答4:

function fun($i=0) {                                                                    
    $i++;echo$i.'
';                                                                
    while($i<10){                                                                       
        fun($i);  // 递归调用                                                           
    }                                                                                   
}                                                                                       
                                                                                                                                                                            
fun();

刚开始 输出 1 2 3 4 5 6 7 8 9 10 10后面一直输出10然后程序死循环,函数自身调用自身,这叫递归,但是递归没有出口,所以就死循环了!

回答5:

没错,9个死循环 永远跳不出来了 哈哈哈哈