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

5 ответов

Хотя или хвостовой рекурсии в F #, что использовать, когда?

Хорошо, только в F #, и вот как я понимаю это сейчас: Некоторые проблемы носят рекурсивный характер (создание или считывание трееструктуры, чтобы назвать только одну), а затем вы используете рекурсию. В этих случаях предпочтительно использовать ...

1 ответ

оптимизация рекурсии бесконечного хвоста

#include <iostream> int foo(int i){ return foo(i + 1); } int main(int argc,char * argv[]){ if(argc != 2){ return 1; } std::cout << foo(std::atoi(argv[1])) << std::endl; }% clang ++ -O2 test.cc % времени ./a.out 42 1490723512 ./a.out 42 0.00s ...

5 ответов

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

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

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

6 ответов

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

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

5 ответов

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

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

3 ответа

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

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

2 ответа

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

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

3 ответа

Haskell: версия хвостовой рекурсии глубины бинарного дерева

Во-первых, у меня есть две разные реализации, которые я считаю правильными, и я их профилировал и думал, что они примерно одинаковой производительности: depth::Tree a -> Int depth Empty = 0 depth (Branch b l r) = 1 + max (depth l) (depth r) ...