递归PHP函数不会停止并冻结我的浏览器

Mar*_*ody 0 php recursion

我有以下递归函数:

$cogs = array('hello', 'how', 'are', 'you');

$wheels = array();

foreach($cogs as $cog)
{
    $wheels[] = array($cog);
}

function recursive($placement){
    $counter = count($placement);
    $nword = '';    
    for($i = 0; $i < $counter; $i++) {
        $nword .= $placement[$i][0];
        echo $nword;
    }
    recursive($placement);
}

recursive($wheels);
Run Code Online (Sandbox Code Playgroud)

显然我做错了,因为我的功能一直在继续.我无法弄清楚为什么......我是PHP中的递归函数的新手,所以对此解决方案的任何帮助将不胜感激.有一个安全网的最佳方法是什么,所以我的PHP函数不能永远运行任何递归函数?

Tha*_*tos 5

它不会停止,因为它recursive是一个无限循环.你写过:

function recursive($placement) {
    // Code that doesn't return, and outputs text
    recursive($placement);
}
Run Code Online (Sandbox Code Playgroud)

你为什么期望永远终止?

任何递归函数都需要有一些最终证明为真的条件,并且在证明为true时将终止递归.

您的浏览器处于冻结状态,因为您的PHP脚本发送给它的大量输出可能很难.

大多数PHP安装最终将终止运行时间过长的脚本.但是,如上所述,如果必须处理来自无限循环的大量输出,则浏览器可能会遇到困难.