07.09.2018, 13:58
|
Новичок на форуме
|
|
Регистрация: 07.09.2018
Сообщений: 4
|
|
Значение свойства когда функция поднимается вверх из рекурсии.
День добрый!
Помогите пожалуйста.
Я дохожу по рекурсии до самого глубокого свойства "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);
|
|
07.09.2018, 14:05
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,213
|
|
Сообщение от ibmpclp
|
Как мне получить значения свойства "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));
|
|
07.09.2018, 14:12
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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>
|
|
07.09.2018, 14:24
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
рони,
Это просто запоминается путь туда в обратном порядке.
А вот как вернуться по объекту обратно?
|
|
07.09.2018, 14:46
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
Dilettante_Pro,
не понимаю
|
|
07.09.2018, 15:17
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,213
|
|
Сообщение от ibmpclp
|
Чтобы было:
4
3
2
1
|
Вона че...
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);
|
|
07.09.2018, 15:19
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
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);
|
|
07.09.2018, 15:45
|
Новичок на форуме
|
|
Регистрация: 07.09.2018
Сообщений: 4
|
|
Да. Оно, чёрт побери.
Спасибо большое. Пока не очень понял как это работает.
Попробую понять.
|
|
07.09.2018, 15:47
|
Новичок на форуме
|
|
Регистрация: 07.09.2018
Сообщений: 4
|
|
Ребята, всем большое спасибо. Помогли
Чую, не последний раз к Вам обращаюсь.
|
|
07.09.2018, 16:06
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Кривой костыль
<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>
|
|
|
|