| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > рекурся навеврное |
| Автор: Paul56 4.11.2008, 14:54 | ||
| коллеги, объесните начинающему. Читая книгу Лари решил попрактиковаться над много уровневыми вложениями. предположим есть меня текстовый файл. в нём соответственной следующее 1|0|Shire 2|1|Frodo 3|1|Bagins 4|0|Allcreatures 5|4|Goblin 6|0|Oko 7|6|Saruman 8|7|Goblin1 9|7|Goblin1 10|7|Goblin1 11|7|Goblin1 12|11|Goblin2 13|8|Goblin2
что то я понять не могу что куда передовать чтобы обход выполнить? p.s прошу не пинать, а лучше помочь советом как правильно это делается, очень хочется разобраться в мелочах. |
| Автор: IceSunrise 4.11.2008, 15:16 |
| Paul56, а что значит "проверка"? Ты хочешь теперь посмотреть, у кого какие потомки? Т.е. например для первой записи: ID=1; NAME=Shire; Childs: Frodo, Bagins. Или какой результат должна дать проверка и что ты хочешь проверить? |
| Автор: Paul56 4.11.2008, 15:27 |
| да совершенно верно |
| Автор: IceSunrise 4.11.2008, 15:52 | ||
Ну тогда я бы сделал так:
Что-то вроде этого. Могут быть ошибки, не запускал, но идея должна быть понятна: каждый герой регистрируется в хеше по его id, в качестве значения этого хеша выступает указатель на другой хеш из двух элементов name - имя героя и childs - потомки героя. Кстати, компактнее потомков можно выводить так: print "ID=$hero_id; NAME=$heros{$hero_id}->{name}; CHILDS: ", map {$heros{$_}->{name}} @{$heros{$hero_id}->{childs}}, "\n"; |
| Автор: gcc 4.11.2008, 16:08 |
| (я бы попробовал хэш массивов... или нет? ) Paul56, используйте СУБД... |
| Автор: Paul56 4.11.2008, 16:45 |
| Совершенно верно, этот пример я хотел реализовать к СУБД. |
| Автор: tolkien 5.11.2008, 08:35 | ||||
| Paul56 В вашем примере от рекурсии только одно название. Вот настоящая рекурсия
Вывод
|