Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 02.04.2016, 22:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

protoquest,
а что такое
Сообщение от protoquest
ТСО
?
Ответить с цитированием
  #12 (permalink)  
Старый 02.04.2016, 22:20
Аспирант
Отправить личное сообщение для gazman Посмотреть профиль Найти все сообщения от gazman
 
Регистрация: 02.09.2015
Сообщений: 38

Рони, мне понравилось Ваше элегантное решение. Только я пока не догоняю некоторые моменты. вот я сам сделал. может, конечно, огород
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));
Ответить с цитированием
  #13 (permalink)  
Старый 02.04.2016, 22:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

gazman,
может убрать 9 строку?
Ответить с цитированием
  #14 (permalink)  
Старый 02.04.2016, 22:32
Аспирант
Посмотреть профиль Найти все сообщения от protoquest
 
Регистрация: 02.04.2016
Сообщений: 50

рони,
оптимизация хвостовой рекурсии, это разворачивание хвостовой рекурсии в цикл на уровне компилятора, грубо говоря.
Ответить с цитированием
  #15 (permalink)  
Старый 02.04.2016, 22:33
Аспирант
Отправить личное сообщение для gazman Посмотреть профиль Найти все сообщения от gazman
 
Регистрация: 02.09.2015
Сообщений: 38

зачем? так не работает. нужно же делать рекурсию и присваивать функции addToArr() новый объект для обработки.
Ответить с цитированием
  #16 (permalink)  
Старый 02.04.2016, 23:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от protoquest
оптимизация хвостовой рекурсии, это разворачивание хвостовой рекурсии в цикл на уровне компилятора, грубо говоря.
не понимаю.
Ответить с цитированием
  #17 (permalink)  
Старый 02.04.2016, 23:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от gazman
так не работает.

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));
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив из элементов другого массива, взятых в случайном порядке Basil_JS Общие вопросы Javascript 6 12.04.2015 13:07
Получить массив без повторяющихся элементов truten Общие вопросы Javascript 5 15.12.2013 20:35
Удалить и вернуть массив из удаленных элементов splice Paulyyy Общие вопросы Javascript 15 29.05.2013 15:36
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов rjabijj Общие вопросы Javascript 6 06.07.2012 21:34
Упорядочить заданный числовой массив X (M) в порядке убывания значений его элементов. Drimmer Серверные языки и технологии 0 02.07.2012 18:22