Вопросы с тегом «recursion»

Для вопросов о рекурсии, практика вызова метода или функции изнутри себя.

126
Есть ли что-нибудь, что можно сделать с помощью рекурсии, что нельзя сделать с помощью циклов?

Есть моменты, когда использование рекурсии лучше, чем использование цикла, и времена, когда использование цикла лучше, чем использование рекурсии. Выбрав «правильный», можно сэкономить ресурсы и / или получить меньше строк кода. Есть ли случаи, когда задача может быть выполнена только с...

123
Циклы рекурсии или пока

Я читал о некоторых практиках интервью для разработчиков, в частности о технических вопросах и тестах, которые задавались на собеседованиях, и я несколько раз спотыкался о высказываниях жанра: «Хорошо, вы решили проблему с помощью цикла while, теперь вы можете сделать это с помощью рекурсия ", или"...

92
Почему в Java вообще нет оптимизации для хвостовой рекурсии?

Из того, что я прочитал: причина в том, что нелегко определить, какой метод на самом деле будет вызываться, поскольку у нас есть наследование. Однако почему в Java, по крайней мере, нет оптимизации хвостовой рекурсии для статических методов и не реализован надлежащий способ вызова статических...

74
На простом английском языке, что такое рекурсия?

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

55
В чем разница между рекурсией и corecursion?

Какая разница между ними? Рекурсия корекурсия В Википедии мало информации и нет четкого кода, объясняющего эти термины. Каковы некоторые очень простые примеры, объясняющие эти термины? Как corecursion двойственна рекурсии? Существуют ли классические corecusive...

48
Рекурсия без факториала, чисел Фибоначчи и т. Д.

Почти каждая статья, которую я могу найти о рекурсии, включает примеры факторных чисел или чисел Фибоначчи, которые: математический Бесполезно в реальной жизни Есть ли интересные примеры не математического кода для обучения рекурсии? Я имею в виду алгоритмы «разделяй и властвуй», но они обычно...

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

Вопрос Каковы возможные способы решения переполнения стека, вызванного рекурсивным алгоритмом? пример Я пытаюсь решить проблему Project Euler 14 и решил попробовать ее с помощью рекурсивного алгоритма. Тем не менее, программа останавливается с java.lang.StackOverflowError. Вполне понятно. Алгоритм...

41
Функциональные языки лучше в рекурсии?

TL; DR: функциональные языки обрабатывают рекурсию лучше, чем нефункциональные? В настоящее время я читаю Code Complete 2. В какой-то момент в книге автор предупреждает нас о рекурсии. Он говорит, что этого следует избегать, когда это возможно, и что функции, использующие рекурсию, обычно менее...

24
Производительность: рекурсия против итерации в Javascript

Недавно я прочитал несколько статей (например, http://dailyjs.com/2012/09/14/functional-programming/ ) о функциональных аспектах Javascript и взаимосвязи между Scheme и Javascript (на последнюю повлияла первая, которая является функциональным языком, в то время как аспекты ОО унаследованы от Self,...

23
Общий способ преобразования цикла (while / for) в рекурсию или из рекурсии в цикл?

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

21
Какие императивные языки программирования не поддерживают рекурсию?

Насколько мне известно, все современные императивные языки программирования поддерживают рекурсию в том смысле, что процедура может вызывать сама себя. Это не всегда имело место, но я не могу найти какие-либо веские факты с помощью быстрого поиска в Google. Итак, мой вопрос: Какие языки не...

20
Что такого сложного в указателях / рекурсии? [закрыто]

Закрыто . Этот вопрос должен быть более сфокусированным . В настоящее время не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав этот пост . Закрыто 5 лет назад . В опасностях java-школ Джоэл рассказывает о своем...

20
Y комбинатор и оптимизация хвостовых вызовов

Определение Y комбинатора в F # let rec y f x = f (y f) x В качестве первого аргумента f ожидает продолжения рекурсивных подзадач. Используя yf в качестве продолжения, мы видим, что f будет применяться к последовательным вызовам, поскольку мы можем развить let y f x = f (y f) x = f (f (y f)) x = f...

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

Для любой произвольно двойной рекурсивной функции, как рассчитать время ее выполнения? Например (в псевдокоде): int a(int x){ if (x < = 0) return 1010; else return b(x-1) + a(x-1); } int b(int y){ if (y <= -5) return -2; else return b(a(y-1)); } Или что-то вдоль этих линий. Какие методы можно...

15
Сколько слишком много вложенных вызовов функций?

Цитируется из MSDN о StackOverflowException : Исключение, которое выдается при переполнении стека выполнения, поскольку он содержит слишком много вложенных вызовов методов. Too manyздесь довольно расплывчато Как я знаю, когда слишком много на самом деле слишком много? Тысячи вызовов функций?...

15
Могут ли компиляторы преобразовывать рекурсивную логику в эквивалентную нерекурсивную логику?

Я изучаю F #, и это начинает влиять на то, как я думаю, когда я программирую на C #. С этой целью я использовал рекурсию, когда чувствую, что результат улучшает читабельность, и я не могу представить, что это приведет к переполнению стека. Это заставляет меня спросить, могут ли компиляторы...

14
Причина оператора возврата в рекурсивном вызове функции

Я просто сомневался. Следующая подпрограмма (например, для поиска элемента в списке) имеет оператор return в конце: list *search_list(list *l, item_type x) { if (l == NULL) return(NULL); if (l->item == x) return(l); else return( search_list(l->next, x) ); } Я не могу получить значение...

14
Когда нет ТШО, когда беспокоиться о том, чтобы унести стек?

Каждый раз, когда обсуждается новый язык программирования для JVM, неизбежно появляются люди, которые говорят что-то вроде: «JVM не поддерживает оптимизацию хвостового вызова, поэтому я предсказываю множество взрывающихся стеков» Есть тысячи вариаций на эту тему. Теперь я знаю, что некоторые языки,...

13
Ресурсы для улучшения вашего понимания рекурсии? [закрыто]

В настоящее время этот вопрос не очень подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, вызовет дебаты, споры, опрос или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и,...