假设我们有一个字符串“Hello,PHP”,我们想重复一遍 三次使用递归函数。
所以我试过这个:
COUNT(*)
它不起作用,我无法打印出来。
答案 0 :(得分:1)
递归尝试的问题在于,在对变量应用修改之前调用递归函数,
当$ n = 3时,您将传递递归基础if($n >= 0){
并立即再次调用递归函数,然后再对$initialstring
进行任何修改。
所以$n = 2
现在,递归基数将被传递,并且在$initialstring
中的任何修改之前,您将返回递归函数,该函数仍将执行相同的行为,直到它返回{{1没有任何修改的 。
您需要的所有内容都是在递归调用之前移动$initialstring
。
$initialString .= ", " . $initialString;
请注意,在这种情况下,您将不会获得字符串“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);