爲了更好地理解遞歸,我決定嘗試使用遞歸函數來查找鏈接列表中的項目而不是while
循環。JavaScript:用於查找鏈接列表節點的遞歸函數返回錯誤的節點
接近尾聲時,我的遞歸函數似乎通過返回正確的節點來做正確的事情,但它運行時會意外返回多次(我不知道爲什麼)並返回一個不正確的對象。我錯過了什麼嗎?
var linkedList = {
element: 'head',
next: {
element: 'SF',
next: {
element: 'LA',
next: {
element: 'SD',
next: {
element: 'NY',
next: null
}
}
}
}
}
function getItem(city, list) {
var item = list
if (item.element != city) {
item = item.next
getItem(city, item)
}
return item
}
console.log(getItem('SD', linkedList)) // logs "SF" node but I expect "SD" node
對不起,你能解釋一下抓住裏面的'if'不返回值?我仍然不瞭解這個錯誤。是否與在'if'中返回內容相同?但它的作品! –
'getItem'每次返回當前元素,但是,在您當前的代碼中,您會忽略該元素,因此您會再次返回'list'。 – NaCl