Найти - Пользователи
Полная версия: Рекурсии и циклы
Начало » Python для новичков » Рекурсии и циклы
1 2
Avond
Уважаемые форумчане, обьясните пожалуйста новичку, в чем разница рекурсии и цикла. И что лучше использовать? Лично мне показалось, что использование циклов более целесообразно… это не так?
pellon
а мне скажите что такое рекурсия?
smoke853
Лутц писал, что рекурсия в python используется довольно редко.
Рекурсивные функции - функции, которые могут вызывать сами себя, прямо или косвенно, образуя цикл.
Этот прием позволяет реализовывать обход структур данных с произвольной и неизвестной заранее организацией.
sergeek
питон тут непричем, есть данные, которые рекурсивны по своей природе, их и проще обработать с помощью рекурсии. В простейшем случае наверно так.
adray
некоторые задачи решаются гораздо проще с помощью рекурсии, но вызов функции - это дополнительные расходы системных ресурсов. В питоне есть ограничение на количество вложенных вызовов, по умолчанию - 1000.
4kpt
Ограничение можно изменить. Используется метод: sys.setrecursionlimit(N), где N - глубина рекурсии.
Если чесно, я ею редко пользуюсь. В основном, чтобы не писать дополнительные функции обработки событий в Tkinter…
sergeek
4kpt
В основном, чтобы не писать дополнительные функции обработки событий в Tkinter…
это как?
4kpt
Событие перехватывается, обрабатывается, производит опреедленные действия (можно даже вне функции), которые, в свою очередь приводят к возвращению к первой функции, но с иными параметрами. Функция их снова обрабатывает данные, но с новыми значения, производит определенные действия, которые, в свою очередь приводят к возвращению опять к функции……….

Хотя это может быть и не прямая рекурсия (функция вызывает сама себя через промежуточную функцию).
GaiveR
Рекурсивные алгоритмы сложнее отлаживать, но порой они позволяют очень гибко и красиво решить задачу. Известно, что любой рекурсивный алгоритм можно заменить нерекурсивным, но это скорее всего будет стоить больше времени на реализацию. Рекурсия часто применяется при решении задач с нисходящим динамическим программированием, а так же в переборных задачах. Впервые столкнувшись с понятием рекурсии возникает вопрос: а не будет ли функция вызывать себя бесконечно? Здесь нужно понять, что рекурсивная функция не должна вызывать себя всегда, иначе программа работать не сможет. При реализации рекурсивных алгоритмов необходимо уделять внимание тому, чтобы алгоритм был конечным, т.е. выполнение рекурсивной функции должно когда-нибудь завершиться.

http://acmp.ru/article.asp?id_sec=1&id_text=1333
4kpt
Рекурсия плоха тем (как уже заметили), что самовызов функции серьезно нагружает машину. А так как существуют методы, которые позволяют снижать нагрузку при циклах (функции модуля itertools) то использование рекурсии должно быть ОЧЕНЬ и ОЧЕНЬ оправлданным. Повторюсь, я использую когда мне рельно лень и я заню, что не сильно насилую машину…
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB