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

Рекурсия хвоста - это рекурсивная стратегия, в которой функция выполняет некоторую работу, а затем вызывает себя. "Хвост" относится к тому, что рекурсия находится в самом конце функции. Многие - особенно функционально-компиляторы языка программирования могут превращать эти типы вызовов в итерацию, то есть хвостовая рекурсия на поддерживаемых языках может использоваться без страха, независимо от количества вызовов.
22
ответов

Что такое хвостовая рекурсия?

В то время как я начинаю изучать lisp, я сталкивался с термином tail-recursive. Что это значит?
задан 29 авг. '08 в 6:48
7
ответов

Что такое оптимизация хвостового звонка?

Очень просто, что такое оптимизация хвостового вызова? Более конкретно, может ли кто-нибудь показать некоторые небольшие фрагменты кода, где он может быть применен, а где нет, с объяснением причины?
задан 22 нояб. '08 в 9:56
15
ответов

Как выйти из цикла в Scala?

Как вырвать цикл? 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.toS...
задан 30 апр. '10 в 9:34
20
ответов

Понимание рекурсии

У меня возникли серьезные проблемы с пониманием рекурсии в школе. Всякий раз, когда профессор говорит об этом, я, кажется, это понимаю, но как только я сам это пробовал, он полностью дует мне в мозги. Я всю ночь пытался решить Башни Ханоя и полность...
задан 04 апр. '09 в 23:10
6
ответов

Оптимизирует ли Python хвостовую рекурсию?

У меня есть следующий фрагмент кода, который не выполняется со следующей ошибкой: RuntimeError: превышена максимальная глубина рекурсии Я попытался переписать это, чтобы разрешить оптимизацию хвостовой рекурсии (TCO). Я считаю, что этот код долже...
задан 27 нояб. '12 в 22:53
5
ответов

Какие, если есть, компиляторы С++ выполняют оптимизацию хвостовой рекурсии?

Мне кажется, что было бы прекрасно работать с оптимизацией хвостовой рекурсии как на C, так и на С++, но во время отладки я никогда не вижу стека кадров, который указывает на эту оптимизацию. Это хорошо, потому что стек говорит мне, насколько глубока...
задан 29 авг. '08 в 10:35
7
ответов

Как работает хвостовая рекурсия?

Я почти понимаю, как работает хвостовая рекурсия, и разница между ней и нормальной рекурсией. Я только не понимаю, почему он не требует, чтобы стек запоминал его обратный адрес. // tail recursion int fac_times (int n, int acc) { if (n == 0) ...
задан 20 марта '13 в 11:47
5
ответов

Обеспечивает ли JVM оптимизацию хвостовых вызовов?

Я видел эту цитату на вопрос: Какой хороший функциональный язык для создания веб-сервиса? Scala, в частности, не поддерживает исключение хвостового вызова, кроме саморекурсивных функций, что ограничивает виды композиции, которые вы можете сделать ...
задан 20 сент. '08 в 0:35
6
ответов

Оптимизированы ли хвосты для Javascript-двигателей?

У меня есть хвостовой рекурсивный алгоритм поиска пути, который я реализовал в Javascript, и хотел бы знать, могут ли какие-либо (все?) браузеры получить исключения.
задан 07 сент. '10 в 19:26
5
ответов

Почему .NET/С# не оптимизируется для рекурсии хвоста?

Я нашел этот вопрос, о том, какие языки оптимизируют хвостовую рекурсию. Почему С# не оптимизирует хвостовую рекурсию, когда это возможно? Для конкретного случая, почему этот метод не оптимизирован в цикл (Visual Studio 2008 32-бит, если это имеет з...
задан 29 янв. '09 в 15:20
5
ответов

Выполняет ли Ruby Tail Call Optimization?

Функциональные языки приводят к использованию рекурсии для решения множества проблем, поэтому многие из них выполняют оптимизацию Tail Call Optimization (TCO). TCO вызывает вызовы функции из другой функции (или самой себя, и в этом случае эта функция...
задан 05 мая '09 в 15:03
2
ответов

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

Я пытался выяснить практические вопросы о том, как хвостовые вызовы обрабатываются компилятором С#. (Ответ: Это не так. Но 64-битные JIT (ов) будут делать TCE (устранение хвостового вызова). Ограничения применяются.) Итак, я написал небольшой тест,...
задан 27 нояб. '13 в 17:58
4
ответов

У Haskell есть рекурсивная оптимизация?

Я обнаружил команду "время" в unix сегодня и подумал, что буду использовать ее, чтобы проверить разницу во время выполнения между хвостовыми рекурсивными и нормальными рекурсивными функциями в Haskell. Я написал следующие функции: --tail recursiv...
задан 24 окт. '12 в 5:55
9
ответов

Функциональное программирование. Много внимания уделяется рекурсии, почему?

Я познакомился с функциональным программированием [FP] (используя Scala). Одна вещь, которая выходит из моих первоначальных знаний, заключается в том, что FP сильно зависят от рекурсии. А также, кажется, в чистых FP единственный способ сделать итера...
задан 30 сент. '12 в 10:42
2
ответов

F # vs OCaml: переполнение стека

Недавно я нашел презентацию о F # для программистов на Python, и после просмотра ее решил реализовать решение головоломки ant "самостоятельно. Существует ant, который может перемещаться по плоской сетке. ant может перемещать одно пространство за р...
задан 24 сент. '11 в 13:57