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

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

4
Что такое хвостовая рекурсия?
Я знаю общую концепцию рекурсии. Я наткнулся на концепцию хвостовой рекурсии при изучении алгоритма быстрой сортировки. В этом видео о алгоритме быстрой сортировки из MIT в 18:30 секунд профессор говорит, что это хвостовой рекурсивный алгоритм. Мне не ясно, что на самом деле означает хвостовая рекурсия. Может ли кто-нибудь объяснить концепцию …

5
Итерация может заменить рекурсию?
Я видел повсюду переполнение стека, например, здесь , здесь , здесь , здесь , здесь и некоторые другие, которые я не хочу упоминать, что «любая программа, использующая рекурсию, может быть преобразована в программу, использующую только итерацию». Была даже тема с сильным голосованием и ответом с большим количеством голосов : да, …

6
Что наиболее эффективно для GCD?
Я знаю, что алгоритм Евклида - лучший алгоритм для получения GCD (большой общий делитель) списка натуральных чисел. Но на практике вы можете кодировать этот алгоритм различными способами. (В моем случае я решил использовать Java, но C / C ++ может быть другим вариантом). Мне нужно использовать максимально эффективный код в …


2
Рекурсивные определения над индуктивным типом с вложенными компонентами
Рассмотрим индуктивный тип, который имеет некоторые рекурсивные вхождения во вложенном, но строго положительном месте. Например, деревья с конечным ветвлением с узлами, использующими общую структуру данных списка для хранения дочерних элементов. Inductive LTree : Set := Node : list LTree -> LTree. Наивный способ определения рекурсивной функции над этими деревьями путем …

3
Почему циклы быстрее, чем рекурсия?
На практике я понимаю, что любая рекурсия может быть записана как цикл (и наоборот (?)), И если мы проводим измерения на реальных компьютерах, мы обнаруживаем, что циклы быстрее, чем рекурсия для той же проблемы. Но есть ли какая-либо теория, которая делает это различие, или это в основном эмпирический?

2
Противоречит ли Y комбинатор соответствию Карри-Ховарду?
Y комбинатор имеет тип . Согласно соответствию Карри-Говарда, поскольку тип является обитаемым, он должен соответствовать истинной теореме. Однако всегда истинно, поэтому кажется, что тип Y-комбинатора соответствует теореме , что не всегда верно. Как это может быть?( a → a ) → a(a→a)→a(a \rightarrow a) \rightarrow a( a → a ) …

3
Можно ли обходить дерево без рекурсии, стека или очереди, и только с горсткой указателей?
Пол десятилетия назад я сидел в классе структур данных, где профессор предлагал дополнительные кредиты, если кто-то мог пройти по дереву без использования рекурсии, стека, очереди и т. Д. (Или любых других подобных структур данных) и всего лишь нескольких указателей. Я придумал, как мне казалось, очевидный ответ на этот вопрос, который …

2
Будет ли эта программа завершена для каждого целого числа?
В Частичном тесте для подготовки к GATE возник вопрос: f(n): if n is even: f(n) = n/2 else f(n) = f(f(n-1)) Я ответил: «Это прекратится для всех целых чисел», потому что даже для некоторых отрицательных целых чисел это прекратится как ошибка переполнения стека . Но мой друг не согласился, сказав, …

2
Какое свойство минусов позволяет устранить хвостовую рекурсию по модулю минусов?
Я знаком с идеей базового исключения хвостовой рекурсии, когда функции, которые возвращают прямой результат вызова для себя, могут быть переписаны как итерационные циклы. foo(...): # ... return foo(...) Я также понимаю, что в особом случае функция все еще может быть переписана, если рекурсивный вызов обернут в вызов cons. foo(...): # …

6
Примеры сложных рекурсивных алгоритмов
Я объяснял известный детерминистический алгоритм линейного выбора времени ( алгоритм медианы медиан) другу. Рекурсия в этом алгоритме (хотя и очень проста) довольно сложна. Есть два рекурсивных вызова, каждый с разными параметрами. Я пытался найти другие примеры таких интересных рекурсивных алгоритмов, но не смог найти ни одного. Все рекурсивные алгоритмы, которые …

1
Является ли это универсальным способом преобразования любой рекурсивной процедуры в хвостовую рекурсию?
Кажется, я нашел общий способ преобразования любой рекурсивной процедуры в хвостовую рекурсию: Определите вспомогательную подпроцедуру с дополнительным параметром «result». Примените то, что будет применено к возвращаемому значению процедуры к этому параметру. Вызовите эту вспомогательную процедуру, чтобы начать. Начальным значением для параметра «result» является значение для точки выхода рекурсивного процесса, поэтому …

4
Сложность рекурсивного алгоритма Фибоначчи
Используя следующий рекурсивный алгоритм Фибоначчи: def fib(n): if n==0: return 0 elif n==1 return 1 return (fib(n-1)+fib(n-2)) Если я введу число 5, чтобы найти fib (5), я знаю, что это выведет 5, но как мне проверить сложность этого алгоритма? Как рассчитать соответствующие шаги?

1
Ханойские башни, но с произвольной начальной и конечной конфигурацией
Недавно я столкнулся с этой проблемой , разновидностью Ханойских башен . Постановка задачи: Рассмотрим следующую вариацию хорошо известной проблемы «Ханойские башни»: Нам дано башен и m дисков размером сложены на несколько башен. Ваша задача - перенести все диски в башню минимальное количество ходов, но вы должны учитывать следующие правила:nnn1,2,3,…,m1,2,3,…,m1,2,3,\dots,mkthkthk^{\text{th}} перемещать …

3
Имеют ли «индуктивно» и «рекурсивно» очень похожие значения?
Означают ли «индуктивно» и «рекурсивно» очень похожие? Например, если есть алгоритм, который определяет n-dim вектор путем определения его первых k + 1 компонентов на основе определения его первых k компонентов и инициализируется с первым компонентом, вы бы назвали его работающим рекурсивно или индуктивно? Я использовал «рекурсивно», но сегодня кто-то сказал …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.