Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Python: Общие вопросы > Избежать глубокой рекурсии |
Автор: flagist0 29.7.2009, 11:15 | ||
Пишу простенький генератор сишного кода. Выбор текущего действия происходит так:
В случае генерации блока {}, метод gen_block() вызывает gen_code_string() для генерации содержимого блока, получается рекурсия. Как видно, действие выбирается случайным образом, поэтому вероятность ухода в глубокую рекурсию невелика, но это почему-то происходит сразу же. Думал над двумя вариантами: 1. Сгруппировать действия по убыванию необходимости частого появления, потом изменить функцию распределения. Но как? 2. Передавать в метод текущую глубину рекурсии, при необходимости выходить. Это моя первая программа на Python, прошу сильно не бить. |
Автор: flagist0 29.7.2009, 18:19 | ||
Второй вариант сработал. Хотя первый вариант был бы предпочтительнее (дал бы очень приятный сайд-эффект правильного распределения видов кода), этот тоже работает. Вопрос закрыт. |