Стоит ли когда -нибудь использовать рекурсию?

Advertisements

6 ответов. Да, есть много раз , я бы не использовал рекурсию. Рекурсия не является бесплатной, она имеет стоимость в стеке, и это часто может быть гораздо более ограниченным ресурсом, чем некоторые другие. Также есть временная стоимость, какая бы небольшая, какая бы небольшая, при настройке и разрыве кадров стека.

Является ли рекурсивная функция плохой?

Плохой. В языках императивного программирования в большинстве случаев следует избегать рекурсивных функций (пожалуйста, нет почты ненависти о том, что это не так 100% времени). Рекурсивные функции менее эффективны, чем их итеративные аналоги. Кроме того, они подвержены опасностям переполнений стека.

Каковы преимущества использования рекурсивных функций?

  • Рекурсия может уменьшить сложность времени. …
  • Рекурсия добавляет ясности и сокращает время, необходимое для написания и отладки кода. …
  • Рекурсия лучше при переселении деревьев. …
  • Рекурсия может быть медленной. …
  • Итерация: функция повторяет определенный процесс, пока условие не удастся.

Каковы два преимущества и недостатки рекурсии?

Преимущества/Недостатки рекурсии #

  • Для решения таких проблем, которые естественным образом рекурсивны, такие как башня Ханоя.
  • Уменьшите ненужный призыв функции.
  • Чрезвычайно полезен при применении одного и того же решения.
  • Рекурсия уменьшает длину кода.
  • Это очень полезно при решении проблемы структуры данных.

Каковы преимущества и недостаток рекурсии?

Преимущества рекурсии

Для рекурсивной функции вам нужно только определить базовый случай и рекурсивный случай , поэтому код проще и короче итеративный код. Некоторые проблемы по своей природе рекурсивны, такие как график и обход деревьев.

Где вы не должны использовать рекурсию?

  • «Рекурсию обычно избегают, потому что это делает код менее читаемым и труднее поддерживать и отлаживать» – это кажется довольно грубым обобщением. …
  • -1 Я просто не согласен с первой половиной ответа, особенно когда такое смелое утверждение (что рекурсия избегается) не подкрепляется какой-либо ссылкой. –

Как прекратить рекурсию?

Чтобы предотвратить бесконечную рекурсию, вам нужен , по крайней мере, одна ветвь (то есть оператора if/else) , который не делает рекурсивный вызов. Ветви без рекурсивных вызовов называются базовыми случаями; Ветви с рекурсивными вызовами называются рекурсивными случаями. Функции также могут быть взаимно рекурсивными.

является ли рекурсием плохо для производительности?

Ваша производительность ухудшается при использовании рекурсии , потому что вызов метода на любом языке подразумевает много подготовки: Взысканный код публикует адрес возврата, параметры вызова, некоторая другая контекстная информация, такая как регистры процессора может быть сохранено где -то, и в время возвращения метод вызова публикует возврат …

Какой смысл рекурсии?

В информатике рекурсия – это метод решения проблемы, в которой решение зависит от решений меньших экземпляров той же проблемы . Такие проблемы, как правило, могут быть решены с помощью итерации, но это должно идентифицировать и индексировать меньшие экземпляры во время программирования.

в чем разница между итеративным и рекурсивным?

Концепция рекурсии и итерации состоит в том, чтобы неоднократно выполнять набор инструкций. Ключевое различие между рекурсией и итерацией заключается в том, что рекурсия – это процесс для вызова функции в рамках одной и той же функции, в то время как итерация должна выполнять набор инструкций, пока заданное условие не станет истинной .

Почему рекурсия не рекомендуется для микроконтроллеров?

(в целом, использование рекурсии в любой малой микроконтроллере встроенной системе является плохой идеей по этим причинам, даже если система не критична безопасности.) … Это дает максимальный размер стека во время конкретной программы Запустите , и общий максимальный размер стека системы, предполагая, что худший путь случая был выполнен.

Advertisements

использует ли рекурсия больше памяти?

Recursion использует больше памяти , но иногда является более четкой и читаемой. Использование петлей увеличивает производительность, но рекурсия иногда может быть лучше для программиста (и его производительности).

Трудно научиться рекурсию?

рекурсия не является жесткой , тогда как в некоторых случаях рекурсивно может сбить с толку. Рекурсивный алгоритм имеет значительные преимущества по сравнению с идентичным итеративным алгоритмом, таким как наличие меньшего количества линий кода и уменьшенное использование структур данных.

Как можно предотвратить рекурсивные триггеры?

Чтобы избежать рекурсивных триггеров, вы можете создать класс со статической логической переменной с значением по умолчанию true . В триггере перед выполнением вашего кода проверьте, что переменная верна или нет. После того, как вы проверяете, сделайте переменную false.

Как вы справляетесь с рекурсивным триггером?

Наилучшая практика для триггеров:

Результат рекурсии – чтобы избежать рекурсии на триггере, Убедитесь, что ваш триггер выполняется только один раз . Вы можете столкнуться с ошибкой: «Максимальная глубина триггера превышена», если рекурсия не обрабатывается хорошо.

Когда нельзя использовать рекурсию?

рекурсия – мощный инструмент, но может быть сложно получить право. Неправильное понимание может привести к ошибкам переполнения стека и вызвать проблемы системы. Даже когда вы делаете это правильно, рекурсивный код может быть трудно понять, возможно, приведет к проблемам обслуживания в будущем.

Почему вы должны избегать рекурсии или, вероятно, не должны?

Да, вы должны избегать использования рекурсии , потому что ему потребуется дополнительное пространство . Так что для большого проекта вы должны избежать его. Вы можете использовать его в циклах, где вы выполняете некоторую повторную (итеративную) задачу (например, фактор, добавление чисел, числа фибоначчи и т. Д.) Но когда размер программы увеличивается, вы должны попытаться избежать этого.

Что такое рекурсия и каковы его преимущества?

Основное преимущество рекурсивного подхода к дизайну алгоритма заключается в том, что он позволяет программистам воспользоваться повторяющейся структурой, присутствующей во многих проблемах. II Сложный анализ случая и вложенные петли можно избежать. iii. рекурсия может привести к более читаемым и эффективным описаниям алгоритмов .

Каковы ограничение рекурсии?

Ограничения рекурсивного подхода:

и возвращается каждая функция, требует много всплесков . 2. Каждый раз, когда вы называете функцию, вы используете часть распределения памяти, может быть в стеке или куче. Если существует большое количество рекурсивных вызовов – тогда у вас может закончено исчерпывать память.

Какова разница между рекурсивными и не рекурсивными функциями дает свои достоинства и недостатки?

Рекурсивная функция, как правило, имеет меньший размер кода, тогда как нерекурсивный больше . В некоторых ситуациях только рекурсивная функция может выполнить определенную задачу, но в других ситуациях как рекурсивная функция, так и нерекурсивная можно сделать.

Каковы преимущества рекурсивной функции в Python?

1.

  • Рекурсивный код имеет код, выглядящий чище.
  • Рекурсия облегчает кодирование, поскольку она разбивает задачу на более мелкие.
  • Легче генерировать последовательность, используя рекурсию, чем с помощью вложенной итерации.

Какие два случая требуются в рекурсивной функции?

Итак, чтобы быть правильно определенной рекурсивной функцией, у вас должен быть базовый случай , то есть способ вернуть функцию без рекурсивного вызова, и ваши рекурсивные вызовы должны работать в направлении базового случая .