Публикации по теме 'tail-recursion'


Зачем использовать хвостовые рекурсии в Scala вместо обычных рекурсий
Я смотрю на Scala уже около 3 недель. То, что я до сих пор узнал, довольно простое: Если вы хотите запачкать руки рекурсиями, Scala не даст вам возможности прокрасться! Вы можете наслаждаться двумя видами рекурсии: нормальной рекурсией и хвостовой рекурсией 🎈 Давайте посмотрим на их различия с помощью простой факториальной функции, сначала реализованной с помощью обычной рекурсии, а затем с помощью хвостовой рекурсии. 1. Факториал Напомню, что факториал - это произведение..

«Хвостовая рекурсия» —  Самая изучаемая тема
Прежде чем мы углубимся в суть, давайте повторим некоторые основы. Рекурсия. Это процесс, в котором функция многократно вызывает сама себя до тех пор, пока не будет достигнуто базовое условие или не будет достигнут желаемый результат. Базовое условие. Это условие, при котором функция перестает делать рекурсивные вызовы и начинает возвращать результат. И если это условие не определено, программа может попасть в бесконечный цикл, который вызовет Ошибку переполнения стека , так..

Что такое рекурсия? | Концепции рекурсии
Зачем нам рекурсия? Любую проблему можно решить как рекурсивным методом , так и итеративным методом . Но всякий раз, когда у нас есть проблема, которую сложно решить с помощью итеративного/циклического метода. Затем мы собираемся разделить задачу на меньший экземпляр той же задачи, что означает, что мы решаем ее рекурсивным методом. Что такое стек вызовов? Стек вызовов — это структура данных стека , которая используется для отслеживания последовательности вызова функции...

2 июля: Генерация k-комбинаций с рекурсией в JavaScript.
Не секрет, что я люблю игры - как за их педагогическую ценность, так и за их развлекательную ценность. Нет лучшего способа научиться программировать, чем писать игру. Даже простые игры имеют правила, иерархии, состояния и условия - навыки, необходимые для решения этих проблем, не отличаются от навыков, которые инженеры используют для решения реальных -мир проблем. Если я изучаю новый язык программирования, первое, что я обычно делаю, - это пытаюсь написать игру, обычно это покер...

Демистификация рекурсии:
Недавно я закончила стипендию программной инженерии для женщин в Академии Хакбрайт . За 10 недель учебный курс научит вас, как создать работающее веб-приложение ( Ознакомьтесь с приложениями, созданными моими замечательными коллегами! ), А также научит вас фундаментальным темам в области CS, таким как структуры данных, алгоритмы и рекурсия. Это был большой объем информации, который нужно было охватить за короткий промежуток времени, и темой, с которой я и другие, казалось, больше всего..

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

Какие компиляторы C ++ выполняют оптимизацию хвостовой рекурсии, если таковые имеются?
Мне кажется, что оптимизация хвостовой рекурсии как на C, так и на C ++ отлично сработает, но при отладке я никогда не вижу стека кадров, который указывает на эту оптимизацию. Это хорошо, потому что стек говорит мне, насколько глубока рекурсия....
45079 просмотров
schedule 10.03.2023

Почему .NET / C # не оптимизирован для рекурсии хвостового вызова?
Я нашел этот вопрос о том, какие языки оптимизируют хвостовую рекурсию. Почему C # не оптимизирует хвостовую рекурсию, когда это возможно? В конкретном случае, почему этот метод не оптимизирован в цикл ( Visual Studio 2008 32-битный, если это...
33277 просмотров
schedule 16.03.2023

Рекурсивные функции Erlang - это не просто переход?
Просто чтобы это прямо у меня в голове. Рассмотрим этот пример фрагмента кода Erlang: test() -> receive {From, whatever} -> %% do something test(); {From, somethingelse} ->...
1596 просмотров
schedule 16.10.2022

Поддерживает ли Scala оптимизацию хвостовой рекурсии?
Поддерживает ли Scala оптимизацию хвостовой рекурсии?
23424 просмотров
schedule 03.08.2023

Хвостовая рекурсия против. Рефакторинг
у меня есть этот метод private def getAddresses(data: List[Int], count: Int, len: Int): Tuple2[List[Address], List[Int]] = { if (count == len) { (List.empty, List.empty) } else { val byteAddress = data.takeWhile(_ != 0)...
509 просмотров
schedule 02.02.2023

постзаказ с использованием хвостовой рекурсии
я нашел эту ссылку, http://www.experts-exchange.com/Programming/Algorithms/Q_25205171.html , в котором предлагается способ выполнения хвостовой рекурсии в обратном порядке. однако он использует 2 стека, есть ли способ сделать это только с одним...
830 просмотров
schedule 29.10.2022

Разве этот код не выполнен в стиле хвостовой рекурсии?
Я как бы новичок в Scala, пробуя его, читая Beggining Scala Дэвида Поллака. Он определяет простую рекурсивную функцию, которая загружает все строки из файла: def allStrings(expr: => String): List[String] = expr match { case null => Nil...
9666 просмотров

Укороченные операторы и хвостовая рекурсия
Скажем, у меня есть простая функция: int all_true(int* bools, int len) { if (len < 1) return TRUE; return *bools && all_true(bools+1, len-1); } Эту функцию можно переписать в более очевидном стиле хвостовой рекурсии...
529 просмотров

Утечка пространства рекурсии Haskell
[Обновлять] Поэтому я изменил свой код, чтобы сделать его более читаемым. У функции dpfsSat два аргумента, klauselMenge — это огромный набор с элементами из X. Во время рекурсии klauselMenge должен сокращаться через какие-то функции. import...
326 просмотров
schedule 08.01.2024

Почему в стандартной библиотеке OCaml так много нерекурсивных функций?
В последнее время я переписывал многие функции стандартной библиотеки OCaml, чтобы они были хвостовыми рекурсивными. Учитывая, что это повлекло за собой прямое преобразование CPS, я не понимаю, почему версии по умолчанию не написаны таким образом....
1362 просмотров

Хвостовая рекурсия и исключения в F#
Я гуглил целую вечность и до сих пор не могу найти ответ. Насколько я понимаю, F# 3.0, работающий на .NET 4.5, не будет использовать хвостовую рекурсию для рекурсивного метода, если инициатор завернул вызов в блок try/catch и/или try/finally. Какова...
677 просмотров
schedule 14.05.2024

Как повторяется этот хвостовой рекурсивный метод?
В приведенном ниже методе Scala, как список xs проходится методом nth ? xs.tail вызывается рекурсивно, но почему хвост не всегда имеет одно и то же значение, поскольку def tail в трейте List просто возвращает список параметризованных типов?...
310 просмотров
schedule 29.07.2023

Могут ли сосуществовать оптимизация хвостовых вызовов и RAII?
Я не могу придумать настоящий язык RAII, который также имеет оптимизацию хвостовых вызовов в спецификациях, но я знаю, что многие реализации C++ могут сделать это как оптимизацию для конкретной реализации. Это ставит вопрос для тех реализаций,...
1684 просмотров

Работа со списками и значениями списка в Erlang
Я изучаю Erlang и делаю упражнения из книги, поэтому я застрял на одном из них. Будет лучше, если я процитирую всю задачу, а затем объясню, что я сделал до сих пор: «Положительное число считается счастливым, если при повторном применении приведенной...
1009 просмотров

Нужно ли мне использовать @tailrec в Scala?
В следующем примере функции Scala: @tailrec def someFunction( ... ): Unit = { Делает ли аннотация @tailrec что-нибудь полезное или просто приятно знать, что это хвостовая рекурсия?
2651 просмотров
schedule 22.05.2022

Реализация функции Tak с использованием хвостовой рекурсии
Можно ли реализовать функцию Tak : хвост рекурсивно в C/C++ таким образом, чтобы gcc/g++ мог выполнять оптимизацию хвостовой рекурсии? Я не уверен, что вызовы вложенных рекурсивных функций запутают компилятор.
462 просмотров

Функция без хвостовой рекурсии не взрывается в GHCi. Почему?
Я ожидал, что мой стек взорвется со следующим кодом... но этого не произошло: *Main> let blowwss x = if x == 0 then 0 else (1 + blowwss (x-1)) *Main> blowwss 1000000 1000000 Функция не кажется хвостовой рекурсией, поэтому мне интересно,...
479 просмотров

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

Проблемы с рекурсивными вызовами при построении структуры данных Tree
Последние несколько дней я пытался понять, как рекурсивно вызывать функцию в python, но безрезультатно. Я создаю древовидную структуру для хранения объектов, и у меня возникают проблемы не только с обходом дерева с помощью генератора, но и с...
61 просмотров
schedule 03.05.2023

Схема, рекурсия с постоянным значением
Я ранее спрашивал о letrec и хвостовой рекурсии, я лучше понял letrec и хвостовую рекурсию из ответов, моя конечная цель заключается в том, чтобы реализовать код схемы для уравнения: например, y (i) = x (i) + 2 , где x (i), y (i) - списки, поэтому...
190 просмотров
schedule 30.01.2024