protoquest,
а что такое Цитата:
|
Рони, мне понравилось Ваше элегантное решение. Только я пока не догоняю некоторые моменты. вот я сам сделал. может, конечно, огород
function listToArray(obj)
{
var rez = new Array;
function addToArr(list)
{
if (list.rest != null)
{
rez.push(list.value);
list = list.rest;
addToArr(list);
}
else
{
rez.push(list.value);
}
}
addToArr(obj);
return rez;
}
a ={value:5, rest:{value:10, rest:{value:15, rest: {value: 30, rest: null}}}};
alert(listToArray(a));
|
gazman,
может убрать 9 строку? |
рони,
оптимизация хвостовой рекурсии, это разворачивание хвостовой рекурсии в цикл на уровне компилятора, грубо говоря. |
зачем? так не работает. нужно же делать рекурсию и присваивать функции addToArr() новый объект для обработки.
|
Цитата:
|
Цитата:
function listToArray(obj)
{
var rez = new Array;
function addToArr(list)
{
if (list.rest != null)
{
rez.push(list.value);
addToArr(list.rest);
}
else
{
rez.push(list.value);
}
}
addToArr(obj);
return rez;
}
a ={value:5, rest:{value:10, rest:{value:15, rest: {value: 30, rest: null}}}};
alert(listToArray(a));
|
| Часовой пояс GMT +3, время: 19:54. |