这不是一个死循环, 是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();
如果要输出1-10则将while改为if。
递归函数需要有退出递归的条件判断,不然就会出现死循环
因为while是一个循环语句,$i=10后会无限执行while循环
谁教你这样写代码的,另外你的$i++只执行一次,没有写到while循环,fun函数你这样在while调用,很容易会崩坏服务器的
function fun($i=0){
while($i<10){
$i++;
echo $i.'
';
}
}
fun();
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然后程序死循环,函数自身调用自身,这叫递归,但是递归没有出口,所以就死循环了!
没错,9个死循环 永远跳不出来了 哈哈哈哈