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

Что такое устранение хвостовой рекурсии?
Стив Йегге упомянул об этом в сообщении в блоге . и я понятия не имею, что это значит, может кто-нибудь заполнить меня? Это то же самое, что оптимизация хвостового вызова ?
9897 просмотров

Устранение хвостового вызова в Clojure?
Может ли кто-нибудь переписать этот (plt) код схемы в Clojure? (define (f n) (printf "(f ~a)~n" n) (g n)) (define (g n) (printf "(g ~a)~n" n) (h n)) (define (h n) (printf "(h ~a)~n" n) (f (+ n 1))) Таким образом, чтобы не...
648 просмотров

Рекурсивная гармоническая функция возвращает NaN
Я написал следующий пример кода, чтобы найти гармоническое значение N. (1+1/2+1/3+...1/N). Прочитайте комментарии в коде, написанном ЖИРНЫМ шрифтом, и помогите мне найти, почему это происходит. #include <stdio.h> float harmonic(float n,...
490 просмотров
schedule 30.11.2022

Как сделать этот хвост функции мощности Haskell рекурсивным?
Как мне сделать эту хвостовую функцию мощности Haskell рекурсивной? turboPower a 0 = 1 turboPower a b | even b = turboPower (a*a) (b `div` 2) | otherwise = a * turboPower a (b-1)
2228 просмотров
schedule 18.02.2022

Если у меня есть выражение, которое можно вычислить частично, стоит ли избегать хвостовой рекурсии?
Рассмотрим haskell-выражение, подобное следующему: (Простой пример, не говорите мне, каков очевидный способ! ;) toBits :: Integral a => a -> [Bool] toBits 0 = [] toBits n = x : toBits m where (m,y) = n `divMod` 2 x = y /= 0...
268 просмотров

Ошибка аннотации Scala tailrec
У меня есть абстрактный класс Java с именем ImmutableEntity и несколько подклассов, которые содержат аннотацию уровня класса с именем @DBTable . Я пытаюсь найти аннотацию в иерархии классов, используя хвостовой рекурсивный метод Scala: def...
2849 просмотров
schedule 19.04.2024

Разве хвостовая рекурсия не должна быть быстрее?
У меня есть следующий код Clojure для вычисления числа с определенным «факторизуемым» свойством. (что именно делает код - вторично). (defn factor-9 ([] (let [digits (take 9 (iterate #(inc %) 1)) nums (map (fn [x] ,(Integer. (apply...
552 просмотров

Хвостовая рекурсия F # и почему бы не написать цикл while?
Я изучаю F # (новичок в функциональном программировании в целом, хотя использовал функциональные аспекты C # в течение многих лет, но давайте посмотрим правде в глаза, это довольно другое), и одна из вещей, которые я прочитал, это то, что компилятор F...
1724 просмотров
schedule 06.05.2022

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

Потоки против хвостовой рекурсии для итерационных процессов
Это продолжение моего предыдущего вопроса . Я понимаю, что мы можем использовать streams для получения приблизительного значения числа "пи" (и других чисел), n-го числа Фибоначчи и т. д. Однако я сомневаюсь, что streams правильно подход к...
341 просмотров
schedule 15.01.2024

Как сделать рекурсию в анонимной fn без хвостовой рекурсии
Как сделать рекурсию в анонимной функции без использования хвостовой рекурсии? Например (из Вандерхарт 2010, стр. 38): (defn power [number exponent] (if (zero? exponent) 1 (* number (power number (- exponent 1))))) Допустим, я...
7399 просмотров

Важность строгой оценки в хвосторекурсивном определении степенной функции
Я понимаю эту функцию и хвостовую рекурсию, но не могу понять, почему важна строгая оценка. Без строгой оценки это все равно было бы хвостовой рекурсией, верно? Так когда же эта функция выйдет из строя без строгой оценки? turboPower a b =...
174 просмотров
schedule 21.11.2023

Оптимизация рекурсии Scala Tail для логических операций с коротким замыканием
Я написал такую ​​функцию на Scala: def isSorted[T](list : List[T])(compare : (T, T) => Boolean) : Boolean = { list match { case Nil => true case x :: Nil => true case x :: rest => !compare(rest.head, x)...
305 просмотров
schedule 09.03.2024

Хвостовая рекурсия - оптимально ли будет использоваться фрейм и как мне проверить, компилируется ли хвостовая рекурсия?
В приведенном ниже коде - довольно тривиальные max и сумма списков - у меня есть рекурсивная функция, вызываемая в конце метода. Будет ли компилятор scala рассматривать это как хвостовую рекурсию и оптимизировать использование кадра стека? Как я...
173 просмотров
schedule 12.02.2022

Хвостовая рекурсия в gcc/g++
Я пытался искать, но не смог найти: что нужно для функций, чтобы gcc оптимизировал хвостовую рекурсию? Есть ли какой-нибудь справочник или список, который содержал бы наиболее важные дела? Поскольку это зависит от версии, меня интересуют версии...
5522 просмотров

Вычисление списка постфиксных выражений
Я написал программу для рекурсивного вычисления постфиксного выражения в прологе из списка выражений. Например, учитывая следующий список: [+,1,2] Он должен возвращать 3. Я сконструировал свой предикат так, чтобы он рекурсивно вызывал сам...
903 просмотров

Какая самая эффективная функция проверки простых чисел с хвостовой рекурсией известна?
Я экспериментировал с метапрограммированием до этого момента: // compiled on Ubuntu 13.04 with: // clang++ -O3 -ftemplate-depth-8192 -fconstexpr-depth=4096 -std=c++11 -stdlib=libc++ -lcxxrt -ldl compile-time-primes.cpp -o compile-time-primes //...
633 просмотров

Как реализовать чистую хвостовую рекурсивную вставку для BST?
Все реализации insert для BST не являются рекурсивными. Можно ли написать вставку с хвостовой рекурсией для BST? Если можно, то как?
1178 просмотров

Переход на хвостовой рекурсивный SML
Итак, я пытаюсь изменить эту функцию на Tail Recursive. Определение, которое у меня есть для Tail Recursive, состоит в том, чтобы использовать «локальную вспомогательную функцию» для накопления моего ответа и возврата его без рекурсивного вызова...
2069 просмотров

Не могу понять фрактальную кривую кривой Коха
Я закодировал свое приложение, чтобы полностью нарисовать снежинку Коха, однако независимо от того, сколько раз я выполнял отладчик, я не могу понять процесс рекурсии этой линии drawKochCurve (level - 1, segmentSize); и то, как он создает...
941 просмотров
schedule 05.12.2023