tail-recursion

Я изучаю пролог в своей лаборатории искусственного интеллекта, из источника изучайте Пролог сейчас!. В 5-й главе мы познакомимся с аккумуляторами . И в качестве примера приведены эти два фрагмента кода. Чтобы найти длину списка без аккумуляторов : len([],0). len([_|T],N) :- len(T,X), N is X+1. с акк...

В настоящее время я играю с неблокирующими фьючерсами Scalaz aka. Обещает выделить. Я изо всех сил пытаюсь сделать следующую функцию хвост-рекурсивной: @tailrec private def repeat( res: Promise[I] ):Promise[I] = res map p flatMap { (b:Boolean) => if( b ) repeat( res flatMap f ) else res } ...

Миелло! Поэтому я ищу краткий, эффективный идиоматический способ в F# для разбора файла или строки. Я предпочитаю рассматривать входные данные как последовательность символов (char seq). Идея заключается в том, что каждая функция отвечает за синтаксический анализ части входных данных, возвращает преобразованн...

в то время как начинаю изучать lisp, я столкнулся с термином хвост-рекурсивный. Что это значит?...

Как мне разорвать цикл? var largest=0 for(i<-999 to 1 by -1) { for (j<-i to 1 by -1) { val product=i*j if (largest>product) // I want to break out here else if(product.toString.equals(product.toString.reverse)) largest=largest max prod...

Я нашел этот вопрос о том, какие языки оптимизируют хвостовую рекурсию. Почему C# не оптимизирует хвостовую рекурсию, когда это возможно? для конкретного случая, почему этот метод не оптимизирован в цикл (Visual Studio 2008 32-бит, если это имеет значение)?: private static void Foo(int i) { if (i == 100...

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

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

Я пытался выяснить, как хвостовые вызовы обрабатываются компилятором C#. (ответ: это не так. но 64bit JIT (s) будет делать TCE (устранение хвостового вызова). ограничения.) поэтому я написал небольшой тест, используя рекурсивный вызов, который печатает, сколько раз он вызывается перед StackOverflowExceptio...

Я хотел проверить foldl против foldr. Из того, что я видел, вы должны использовать foldl над foldr, когда вы можете из-за оптимизации хвостовой рекурсии. это имеет смысл. Однако после запуска этого теста я запутался: foldr (занимает 0.057 с при использовании команды time): a::a -> [a] -> [a] a x = ([...