|
Подскажите пример рекурсии с более чем 1 функциями | ☑ | ||
---|---|---|---|---|
0
1dvd
17.10.13
✎
10:01
|
Сабж. И существует ли задача, когда это целесообразно?
|
|||
1
andreymongol82
17.10.13
✎
10:08
|
Обход дерева с расчетом суммы по всем уровням
|
|||
2
andreymongol82
17.10.13
✎
10:12
|
(1) Средней суммы, просто суммы можно и в одной
|
|||
3
1dvd
17.10.13
✎
10:12
|
Функция ПолучитьСуммуВетки(Ветка)
Для каждого Подветка из Ветка.Подветки Цикл Ветка.Сумма = Ветка.Сумма + ПолучитьСуммуВетки(Подветка); КонецЦикла; КонецФункции |
|||
4
1dvd
17.10.13
✎
10:13
|
(2) покажи пример
|
|||
5
dk
17.10.13
✎
10:15
|
построение дерева структуры подчиненности документов
хотя формулировка "с более чем 1 функциями" непонятна |
|||
6
1dvd
17.10.13
✎
10:18
|
(5) рекурсия - когда из одной функции вызывается эта же самая функция.
А я говорю, наверно, про сложную рекурсию, когд из Функ1 вызывается Функ2, а из Функ2 вызывается Функ1. Или более сложная схема |
|||
7
qeos
17.10.13
✎
10:19
|
месье, зачем вам это?
|
|||
8
1dvd
17.10.13
✎
10:19
|
(6)+ посмотрел в вики. Точно - сложная рекурсия она называется
|
|||
9
andreymongol82
17.10.13
✎
10:22
|
(4) Долго искать. У меня так было.
Одно дерево, преобразовывал в другое дерево с добавлением колонок. Первая обходила дерево рекурсивно до нужной глубины и "некоторым признаком", потом вызывалась функция. Которая обходила следующие уровни и добавляла колонки, если некоторый признак встречался, вызывалась первая функция |
|||
10
Classic
17.10.13
✎
10:23
|
Зачем?
ну например можно двумя функциями сделать обход дерева игры. Для расчета одного соперника - одна функция, для расчета другого - другая |
|||
11
andreymongol82
17.10.13
✎
10:23
|
(9) + Соответственно показатели, в зависимости от "некоторого признака" тоже по разному считались
|
|||
12
1dvd
17.10.13
✎
10:29
|
(10) не понял каким образом одна будет вызывать другую
|
|||
13
andreymongol82
17.10.13
✎
10:49
|
(12) Первая обходит дерево рекурсивно до определенного признака, потом вызывает другую, которая тоже обходит рекурсивно до самого дна или до определенного признака (точнее его отсутствия), в этом случае вызывает первую, чтобы она пошла дальше в глубину до определенного признака.
первая у меня добавляла строки, вторая добавляла или заполняла колонки. |
|||
14
andreymongol82
17.10.13
✎
10:51
|
(13) Кстати, это частный случай (10) получился
|
|||
15
Classic
17.10.13
✎
11:19
|
(13)
Угу (12) Ну как делают обход дерева игры? На нечетном уровне делают оценки нижнего уровня и берут максимум, на четном - минимум. Это простейший случай. Для нечетного уровня пишешь функцию Функция РассчитатьМоиВарианты(ВариантРасчета) Результат = 0; Для Каждого Вариант ИЗ ВариантРасчета.Варианты Цикл Результат = МАКС(Результат, РассчитатьЧужиеВарианты(Вариант)); КонецЦикла; КонецФункции Для четного Функция РассчитатьЧужиеВарианты(ВариантРасчета) Результат = 100000; Для Каждого Вариант ИЗ ВариантРасчета.Варианты Цикл Результат = МИН(Результат, РассчитатьМоиВарианты(Вариант)); КонецЦикла; КонецФункции Ну и выходы из функции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |