我被一個僱主給出了一個測驗來確定我作爲一個程序員的能力,測試或多或少「寫一個函數來計算這個鏈表的長度」。我沒有通過測驗,因爲無論什麼原因,我的功能都沒有返回任何東西(這是一個定時測驗)。這是我的代碼。遞歸函數和鏈表PHP
class IntList{
var $value = 1;
var $next = null;
}
$A = new IntList();
$B = new IntList();
$C = new IntList();
$D = new IntList();
$A->next = $B;
$B->next = $C;
$C->next = $D;
main($A);
$count = 0;
function main($L)
{
global $count;
$final = getListLength($L, $count);
print $final;
}
function getListLength($L, $count)
{
if (isset($L->next))
{
$count++;
getListLength($L->next, $count);
} else
{
print $count;
return $count;
}
}
in getListLength即時得到3當我打印計數之前,返回語句。但是在函數返回後,我沒有輸出。我現在感覺真的很愚蠢。有什麼想法嗎?
你叫'getListLength'並通過'$ count'作爲參數,但你永遠不使用它的遞歸調用中返回值('getListLength($ L->接下來,$數);') 。這是第一個錯誤,第二個錯誤是,如果你點擊'else'語句,你什麼也不會返回... –
哪部分是你的代碼,哪部分是測驗代碼? –
@MarkusSafar如果他沒有擊中其他的命中遞歸,所以沒關係他沒有在第一個塊中返回任何東西。 –