我不知道爲什麼,但我創建了一個函數,並以某種方式它永遠不會返回任何東西。 它應該返回使用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