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

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

52
Что такое хвостовая рекурсия?

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

42
Итерация может заменить рекурсию?

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

26
Что наиболее эффективно для GCD?

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

21
Рекурсивные определения над индуктивным типом с вложенными компонентами

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

20
Почему плохая рекурсия?

В дизайне компилятора, почему левая рекурсия должна быть исключена в грамматике? Я читаю, что это потому, что это может вызвать бесконечную рекурсию, но разве это не так и для правильной рекурсивной...

18
Почему циклы быстрее, чем рекурсия?

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

16
Противоречит ли Y комбинатор соответствию Карри-Ховарду?

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

15
Можно ли обходить дерево без рекурсии, стека или очереди, и только с горсткой указателей?

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

14
Будет ли эта программа завершена для каждого целого числа?

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

14
Примеры сложных рекурсивных алгоритмов

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

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

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

13
Сложность рекурсивного алгоритма Фибоначчи

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

13
Является ли это универсальным способом преобразования любой рекурсивной процедуры в хвостовую рекурсию?

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

11
Ханойские башни, но с произвольной начальной и конечной конфигурацией

Недавно я столкнулся с этой проблемой , разновидностью Ханойских башен . Постановка задачи: Рассмотрим следующую вариацию хорошо известной проблемы «Ханойские башни»: Нам дано башен и m дисков размером сложены на несколько башен. Ваша задача - перенести все диски в башню минимальное количество...

11
Имеют ли «индуктивно» и «рекурсивно» очень похожие значения?

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

10
Как вывести зависимые типизированные элиминаторы?

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

10
Алгоритм для проверки, является ли двоичное дерево поисковым деревом и подсчитывает ли количество полных ветвей

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

9
Арифметические выражения преобразования грамматики

В статье Теодора Норвелла (1999) « Разбор выражений по рекурсивному спуску» автор начинает со следующей грамматики для арифметических выражений: E --> E "+" E | E "-" E | "-" E | E "*" E | E "/" E | E "^" E | "(" E ")" | v что довольно плохо, потому что это неоднозначно и леворекурсивно. Поэтому...