Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 13.11.2018, 21:00
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

Сообщение от j0hnik Посмотреть сообщение
Прямо таки любую?
цикл + рукотворный стек - вот тогда любую
каждую рекурсивную задачу можно переписать на цикл и стек, но будет мутный говнокод
Ответить с цитированием
  #12 (permalink)  
Старый 13.11.2018, 21:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Poznakomlus,
пост#8 в строке 13 поменяйте 29 на 1.
Ответить с цитированием
  #13 (permalink)  
Старый 13.11.2018, 23:06
Новичок на форуме
Отправить личное сообщение для Epitough Посмотреть профиль Найти все сообщения от Epitough
 
Регистрация: 12.11.2018
Сообщений: 7

Извиняюсь, если это был глупый вопрос. Спасибо, пойду дальше разбираться
Ответить с цитированием
  #14 (permalink)  
Старый 13.11.2018, 23:08
Новичок на форуме
Отправить личное сообщение для Epitough Посмотреть профиль Найти все сообщения от Epitough
 
Регистрация: 12.11.2018
Сообщений: 7

Сообщение от Poznakomlus Посмотреть сообщение
спрашивается зачем здесь map(), reduce()?
Да я чисто для себя.
Ответить с цитированием
  #15 (permalink)  
Старый 14.11.2018, 04:01
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от Alexandroppolus
но будет мутный говнокод
увы, бывает и от рекурсии не отказался
<script>
const graph = {
    value: 65,
    children: [{
        value: 15,
        children: [{
            value: 55,
            children: [{
                value: 85,
                children: [{
                    value: 66,
                    children: [{
                        value: 1
                    }, {
                        value: 21
                    }]
                }]
            }, {value: -30}]
        }]
    }, {
        value: -1
    }]
};

const tree = data => {
    let arr = [], cur
    while (data.children && (cur = data.children.pop())) {
        arr = arr.concat(tree(cur))
    }
    return arr.concat(data.value)
}
const arr = tree(graph)
document.write(`Min: ${Math.min(...arr)}, Max: ${Math.max(...arr)}`)

//var tree=function(a){for(var b=[],c;a.children&&(c=a.children.pop());)b=b.concat(tree(c));return b.concat(a.value)};
</script>

Последний раз редактировалось Vlasenko Fedor, 14.11.2018 в 04:15.
Ответить с цитированием
  #16 (permalink)  
Старый 18.11.2018, 17:54
Новичок на форуме
Отправить личное сообщение для Epitough Посмотреть профиль Найти все сообщения от Epitough
 
Регистрация: 12.11.2018
Сообщений: 7

Я сделал нахождение среднего значение таким образом:
const average = (graph) => {
    return sum(graph) / count(graph);
};

const sum = (graph) => {
    return graph.children ? graph.children.map(sum).reduce((item1, item2) => item1 + item2, graph.value) : graph.value;
}

const count = (graph) => {
    return graph.children ? graph.children.map(count).reduce((item1, item2) => {
    return item2.value ? (item1++, item1) : item1 += item2;
    }, 1) : graph;
};

Можно ли сделать это одной функцией(один проход по дереву)?

Последний раз редактировалось Epitough, 18.11.2018 в 18:43.
Ответить с цитированием
  #17 (permalink)  
Старый 18.11.2018, 19:39
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

function average({ value, children = [] }, result = { sum: 0, count: 0 }) {
	result.sum += value;
	result.count++;

	for(const child of children)
		average(child, result);

	return result.sum / result.count;
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать массив объектов в массив массивов sovsem-nub Events/DOM/Window 4 12.05.2018 21:56
ООП - перебор объектов и применение к ним метода wadim Общие вопросы Javascript 16 22.10.2017 01:51
перебор массива объектов phoenix200689 Общие вопросы Javascript 5 27.07.2017 09:42
Создание из 2 массивов массив объектов RoyalHunt Общие вопросы Javascript 7 17.01.2017 17:15
Перебор объектов DivMan Общие вопросы Javascript 15 07.09.2016 10:12