我不知道为什么,但我创建了一个函数,并以某种方式它永远不会返回任何东西。 它应该返回使用mt_rand()函数生成的随机数。 我修改了代码,并试图在ideone运行它,结果说运行时错误信号11(SIGSEGV)函数总是返回null
谁能告诉我有什么错呢?
<?php
function breedingTree($name, $N, $max)
{
include('config.php');
if ($N < $max AND $name > 0)
{
$sql = 'SELECT sire, dam
FROM '.$prefix.'owned_adoptables
WHERE aid = "'.$name.'"';
$res = mysql_query($sql);
list($s, $d) = mysql_fetch_row($res);
if (mt_rand(0,1) === 1) breedingTree($s, $N+1, $max);
else breedingTree($d, $N+1, $max);
}
elseif ($name <= 0)
{
if ($N === 0) return mt_rand(1,100);
elseif ($N === 1) return mt_rand(5,95);
elseif ($N === 2) return mt_rand(15,85);
elseif ($N === 3) return mt_rand(25,75);
}
}
echo breedingTree(355, 0, 4); // Return nothing
echo breedingTree(0, 0, 4); // Return random number between 1 - 100
?>
这需要进行基本的调试。如果没有返回,可能是因为'$ name'是'> 0'。 '$ name','$ N'和'$ max'包含什么? – 2011-04-30 14:20:35
不要递归调用breedingTree()需要返回值吗?否则,价值将如何传播回来? – 2011-04-30 14:21:45
您的代码可能存在问题的一些指针 - (1)如果递归函数与SQL查询在其中可能会非常糟糕的性能,如果你递归很多(2)包括在你的函数中的PHP文件将范围一切到你的函数和在你的函数中执行该php文件中的所有代码。 – 2011-04-30 14:23:35