Имя: Пароль:
IT
 
Подскажите пример рекурсии с более чем 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;
   Для Каждого Вариант ИЗ ВариантРасчета.Варианты Цикл
       Результат = МИН(Результат, РассчитатьМоиВарианты(Вариант));
   КонецЦикла;
КонецФункции


Ну и выходы из функции