Результаты поиска по запросу "tail-recursion"

6 ответов

Преобразовать нормальную рекурсию в хвостовую рекурсию

Мне было интересно, если есть какой-то общий метод для преобразования "нормальной" рекурсии сfoo(...) + foo(...) как последний вызов хвостовой рекурсии. Например (scala): def pascal(c: Int, r: Int): Int = { if (c == 0 || c == r) 1 else pascal(c ...

2 ответа

Почему рекурсивный вызов вызывает StackOverflow на разных глубинах стека?

Я пытался понять, как хвостовые вызовы обрабатываются компилятором C #. (Ответ:Они не. [https://stackoverflow.com/questions/491376/why-doesnt-net-c-optimize-for-tail-call-recursion] Но64-битный JIT БУДЕТ делать TCE (устранение хвостовых ...

3 ответа

А поскольку это хвостовой контекст, функция является хвостовой рекурсивной. Вот как это делают функциональные программисты: просматривают тело определения на предмет рекурсивных вызовов, а затем проверяют, что каждое из них происходит в хвостовом контексте. Более интуитивное определение хвостового вызова - это когда ничего не делается с результатом вызова, кроме его возврата.

тся ли эта функция хвостовой рекурсивной? let rec rec_algo1 step J = if step = dSs then J else let a = Array.init (Array2D.length1 M) (fun i -> minby1J i M J) let argmin = a|> Array.minBy snd |> fst rec_algo1 (step+1) (argmin::J)В общем, есть ...

ТОП публикаций

2 ответа

и избежать необходимости внутреннего метода. Но это не всегда возможно, и это не может быть красиво вызвано из кода Java, если вы беспокоитесь о взаимодействии.

ного новичок в том, что Скала пробует это, когда читает Дэвида Поллака «Начать Скала». Он определяет простую рекурсивную функцию, которая загружает все строки из файла: def allStrings(expr: => String): List[String] = expr match { case null => ...

2 ответа

 медленнее, на самом деле это будет иметь поведение O (n ^ 2), которого следует избегать, как ад. Если вы не хотите использовать реверс, просто используйте рекурсивное тело вместо хвостового и не используйте

ичок в изучении Erlang. После прочтения о списочном понимании и рекурсии в Erlang, я хотел попробовать реализовать свой собственныйmap функция, которая получилась так: % Map: Map all elements in a list by a function map(List,Fun) ...

2 ответа

Большое спасибо за просмотр этого Томаса. Однако, как говорит kvb, это вызывает немного больше вопросов, чем ответов. В частности, есть ли что-то в выражениях вычислений, из-за которых компилятор теряет "хвостовую рекурсивность" функций, написанных с использованием bind, если bind не записан в стиле передачи продолжения? Значит ли это, что любой построитель вычислений в реальном мире должен проходить мимо?

ытие: это появилось в FsCheck, среде случайного тестирования F #, которую я поддерживаю. У меня есть решение, но оно мне не нравится. Более того, я не понимаю проблемы - ее просто обошли. Довольно стандартная реализация последовательности ...

5 ответов

В чем преимущество использования хвостовой рекурсии?

Я читал статьи, описывающие, как можно уменьшить сложность быстрой сортировки с помощью хвостовой рекурсивной версии, но я не могу понять, как это так. Ниже приведены две версии: QUICKSORT(A, p, r) q = PARTITION(A, p, r) QUICKSORT(A, p, q-1) ...

4 ответа

Однако этот ответ неполон, потому что мы не учли, что произойдет, если мы дадим пустой список. Мы думали, что в нашем списке всегда есть хотя бы один элемент. Поэтому нам нужно подумать о том, каким должен быть ответ, если нам дан пустой список, а ответ, очевидно, равен 0. Поэтому добавьте эту информацию в нашу функцию, и это называется условием основания / ребра.

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

5 ответов

Есть ли проблемы, которые нельзя написать с помощью хвостовой рекурсии?

Хвостовая рекурсия является важной стратегией оптимизации производительности в функциональных языках, поскольку она позволяет рекурсивным вызовам использовать постоянный стек (а не O (n)). Существуют ли проблемы, которые просто не могут быть ...

3 ответа

Пролог Аккумуляторы. Они действительно «другая» концепция?

Я изучаю Пролог в своей лаборатории искусственного интеллекта, из источника Изучай пролог сейчас! [http://www.learnprolognow.org/lpnpage.php?pageid=online]. В 5-й главе мы узнаем оАккумуляторы, И как пример, эти два фрагмента ...