Вопросы по теме 'tail-recursion'

сумма хвостовой рекурсии, мощность, gcd в прологе?
как я могу это сделать: Дайте определение хвостовой рекурсии для каждого из следующих предикатов. power(X,Y,Z) : XY=Z. gcd(X,Y,Z) : Наибольший общий делитель X и Y равен Z. sum(L,Sum) : Сумма — это сумма элементов в Л. до сих пор я сделал...
2392 просмотров

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

Как я могу реализовать добавление хвостовой рекурсии к списку?
Такая простая функция добавления (в F #): let rec app s t = match s with | [] -> t | (x::ss) -> x :: (app ss t) произойдет сбой, когда s станет большим, поскольку функция не является хвостовой рекурсивной. Я заметил, что...
7537 просмотров
schedule 17.01.2024

Почему компилятор Scala не применяет оптимизацию хвостового вызова, если метод не является окончательным?
Почему компилятор Scala не применяет оптимизацию хвостового вызова, если метод не является окончательным? Например, это: class C { @tailrec def fact(n: Int, result: Int): Int = if(n == 0) result else...
4843 просмотров

преобразовать рекурсивную функцию для использования хвостовой рекурсии
Скажем, у меня есть такая функция: user=> (def m {10 5, 5 2, 2 1}) #'user/m user=> (defn hierarchy [x] (when x (cons x (hierarchy (get m x))))) #'user/hierarchy user=> (hierarchy 10) (10 5 2 1) user=> И, очевидно, здесь это...
192 просмотров
schedule 04.12.2023

Действительно ли рекурсия Tail действительно эффективна на языке C?
Я думаю, что Tail-recursive действительно полезен в функциональном языке программирования. Как насчет С? Поддерживает ли язык C или компилятор устранение хвостовых вызовов ? Создает ли программа новый кадр стека для нового вызова? Из...
446 просмотров
schedule 13.08.2022

Рекурсивная привязка F # в вычислительных выражениях и хвостовая рекурсивность
Я пытаюсь понять, как правильно вызывать рекурсивные функции в вычислительных выражениях и не получать исключение переполнения стека. Насколько я понимаю, это довольно известная проблема, но до сих пор не могу понять суть. Может быть, у кого-нибудь...
387 просмотров
schedule 28.06.2022

Хвостовая рекурсия Scala из блока finally
Я хочу применить функцию f к каждому элементу List и не останавливаться на первой ошибке, а выдавать только последнюю ошибку (если есть): @annotation.tailrec def tryAll[A](xs: List[A])(f: A => Unit): Unit = { xs match { case x :: xt...
280 просмотров

Котлинская рекурсия
fun fact(x: Int): Int{ tailrec fun factTail(y: Int, z: Int): Int{ if (y == 0) return z else return factTail(y - 1, y * z) } return factTail(x, 1) } Может ли кто-нибудь объяснить мне, как приведенная выше функция...
717 просмотров
schedule 29.03.2024

Как лучше решить это упражнение более неизменяемым способом?
Я пытаюсь решить проблему на HackerRank. Я пытаюсь решить эту проблему более функциональным способом (используя неизменность). Я попытался решить, но я не полностью уверен в этом. Вот ссылка на проблему:...
136 просмотров