Я следил за яркой книгой Javascript и делал упражнение связанного списка. Я застрял с рекурсией. Я использую следующий код:Рекурсия Javascript с массивом
function arrayToList(array){
var list = {};
length = array.length;
while(array.length > 0){
element = array.pop();
if (length == array.length + 1)
list = { value: element, rest: null};
else
list = { value: element, rest: list};
}
return list;
}
function nth(list , number){
array = [];
if (list.rest != null && number !=0) {
number--;
array.push(list.value);
nth(list.rest, number);
}
answer = list.value
array.push(list.value);
return array[0];
}
example_list = arrayToList([1,2,3,4]);
a = nth(example_list, 3);
console.log(a);
Мой вопрос в том, как рекурсия точно работает для «п-го) (» функции.
Я написал это сам, но я могу только заставить его работать при использовании массива [0], и я ожидал, что смогу просто использовать list.value в качестве возвращаемого значения. При отладке я вижу, что он переходит к правильному значению (4), но затем возвращается к первому значению (1).
Так что мои вопросы можно это сделать, не использовать массив? Похоже, что массив неправильный, и я хочу только получить правильное значение? Если какие-либо ошибки в коде также получают советы по поводу стиля.
Спасибо, что ясный ответ! Помогает мне двигаться вперед! Особенно обратный логический кончик! – Koen