|
Дерево значений
| ☑ |
0
semiluki
28.07.11
✎
18:52
|
Подскажите пожалуйста как найти максимальный уровень дерева значений
|
|
1
poligraf
28.07.11
✎
18:54
|
ДЗ.КоличествоУровней()
|
|
2
Axel2009
28.07.11
✎
19:09
|
(0) пробежаться по дереву с рекурсией
(1) нет такого.. =)
|
|
3
poligraf
28.07.11
✎
19:11
|
(2) блин. через три релиза в платформе будет. поторопился
|
|
4
semiluki
28.07.11
✎
19:15
|
Так првильно?
Уровень = 0;
ОбрататьДерево(ДеревоЗн.Строки);
Процедура ОбрататьДерево(Строки)
Уровень = Уровень + 1;
Для Каждого Строка Из Строки Цикл
ОбрататьДерево(Строка.Строки);
КонецЦикла;
КонецПроцедуры // ОбрататьДерево()
|
|
5
poligraf
28.07.11
✎
19:17
|
(4) нет.
Уровень-то ты как получишь?
Либо переменную делать глобальной (в пределах модуля), что не айс, либо функция рекурсивную - которая будет возвращать уровень.
|
|
6
semiluki
28.07.11
✎
19:23
|
А как првильно?
|
|
7
Axel2009
28.07.11
✎
19:27
|
НулевойУровень = 0;МаксУровень = 0;
ОбрататьДерево(ДеревоЗн.Строки, НулевойУровень);
Процедура ОбрататьДерево(Строки, Знач Уровень)
Уровень = Уровень + 1;
Если МаксУровень < Уровень Тогда
МаксУровень = Уровень;
КонецЕсли;
Для Каждого Строка Из Строки Цикл
ОбрататьДерево(Строка.Строки, Уровень);
КонецЦикла;
КонецПроцедуры // ОбрататьДерево()
|
|
8
Rie
28.07.11
✎
19:28
|
(7) Можно и без глобальных переменных.
|
|
9
poligraf
28.07.11
✎
19:30
|
(6) Думать же надо...
Вот 1С лениво запускать проверить и с СП сверится, но как-то так...
Функция КоличествоУровней(СтрокиДЗ)
Если СтрокиДЗ.Количество() = 0 Тогда Возврат 0 КонецЕсли;
КоличествоУровней = 0;
Для Каждого СтрокаДЗ ИЗ СтрокиДЗ Цикл
КоличествоУровней = Макс(КоличествоУровней(СтрокиДЗ), КоличествоУровней);
КонецЦикла;
Возврат КоличествоУровней + 1;
КонецФункции
|
|
10
poligraf
28.07.11
✎
19:31
|
*КоличествоУровней = Макс(КоличествоУровней(СтрокаДЗ.Строки), КоличествоУровней);
|
|
11
poligraf
28.07.11
✎
19:32
|
Да и начальное условие не надо вроде как...
В бесконечную рекурсию не впадет
|
|
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой