Просмотр полной версии : Значение свойства когда функция поднимается вверх из рекурсии.
День добрый!
Помогите пожалуйста.
Я дохожу по рекурсии до самого глубокого свойства "next" в списке.
Как мне получить значения свойства "value" на выходе из рекурсии, когда функция поднимается вверх?
Чтобы было:
4
3
2
1
let list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: null
}
}
}
};
function printList(list) {
console.log(list.value);
if (list.next) {
printList(list.next);
}
}
printList(list);
Как мне получить значения свойства "value" на выходе из рекурсии, когда функция поднимается вверх?
Оно?
let list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: null
}
}
}
};
function printList(list) {
console.log(list.value);
if (list.next) {
return printList(list.next);
} else {
return list.value;
}
}
alert(printList(list));
ibmpclp,
<script>
let list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: null
}
}
}
};
function printList(list) {
var a = [list.value];
if (list.next) {
a = printList(list.next).concat(a);
}
return a
}
var a = printList(list);
document.write(JSON.stringify(a, null, 4))
</script>
Dilettante_Pro
07.09.2018, 14:24
рони,
Это просто запоминается путь туда в обратном порядке.
А вот как вернуться по объекту обратно? :blink:
Dilettante_Pro,
не понимаю
Чтобы было:
4
3
2
1
Вона че... :D
let list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: null
}
}
}
};
function printList(list) {
if (list.next) {
printList(list.next);
};
console.log(list.value);
}
printList(list);
Dilettante_Pro,
это?
let list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: null
}
}
}
};
function printList(list) {
var a = list.value;
if (list.next) {
printList(list.next);
}
alert(a);
return a
}
var a = printList(list);
Да. Оно, чёрт побери.
Спасибо большое. Пока не очень понял как это работает.
Попробую понять.
Ребята, всем большое спасибо. Помогли
Чую, не последний раз к Вам обращаюсь.
Dilettante_Pro
07.09.2018, 16:06
Кривой костыль:write:
<script>
var list = {
value: 1,
next: {
value: 2,
next: {
value: 3,
next: {
value: 4,
next: null
}
}
}
};
var vName = "list",
down = true;
function printList(lst) {
console.log(lst.value);
if (lst.next && down) {
vName += ".next";
printList(lst.next);
}
else {
down = false;
if(vName.length > 5) {
vName = vName.substr(0,vName.length - 5);
printList(eval(vName));
}
}
}
printList(list);
</script>
Dilettante_Pro
07.09.2018, 16:20
рони,
Как мне получить значения свойства "value" на выходе из рекурсии, когда функция поднимается вверх?
По заданию ТС вроде да - значения выводятся по мере выхода функции из рекурсии. У вас есть лишние телодвижения, затрудняющие понимание.
Кстати, у ksa вполне правильный ответ и без излишеств - оформлен неправильно, поэтому не запускается.
Мне думалось другое - подняться по объекту обратно. Получилось некрасиво.
Да, именно.
Значения выводятся по мере выхода функции из рекурсии.
Я думал что можно как-то вытащить значения с помощью Function.caller, т.е. как-то вытряхнуть из стека вызовов.
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot