php递归函数打印字符串3次不起作用

时间:2017-10-05 08:28:20

标签: php recursion

假设我们有一个字符串“Hello,PHP”,我们想重复一遍 三次使用递归函数。

所以我试过这个:

COUNT(*)

它不起作用,我无法打印出来。

3 个答案:

答案 0 :(得分:1)

递归尝试的问题在于,在对变量应用修改之前调用递归函数,

当$ n = 3时,您将传递递归基础if($n >= 0){并立即再次调用递归函数,然后再对$initialstring进行任何修改。

所以$n = 2现在,递归基数将被传递,并且在$initialstring中的任何修改之前,您将返回递归函数,该函数仍将执行相同的行为,直到它返回{{1没有任何修改的

您需要的所有内容都是在递归调用之前移动$initialstring

$initialString .= ", " . $initialString;

实例:https://3v4l.org/Aa2Rd

请注意,在这种情况下,您将不会获得字符串“Hello,PHP”3次,这是因为您正在递归字符串修改的连接

答案 1 :(得分:0)

几个问题。

在从传递的计数器中取1之前检查> = 0,因此例程重复4次。

您在调用函数后操作字符串,但之后您不对字符串执行任何操作。如果你在调用之前操纵字符串,那么你可以更快地添加项目(当你重复传递字符串,然后重复重复的字符串等)

以下情况可能会为您完成,如果已超过计数,则不返回任何内容。

$initialString = "Hello PHP";
$myFunc = function($n = 3, $initialString) use (&$myFunc) {
    if($n > 0){
        $temp = $initialString . "," . $myFunc($n - 1, $initialString);
        return $temp;
    }

    return '';
};

echo $myFunc(3, $initialString);

答案 2 :(得分:0)

请试试这个:

$initialString = "Hello, PHP";
$n=3;
function printtr($initialString, $n)
{
    if ($n==0)
    {
        exit;
    }
    echo $initialString."<br/>";
    $n = $n-1;
    printtr($initialString, $n);
}
printtr($initialString, $n);