tail-recursion- все статьи тега


Является ли следующая функция хвостового вызова optmized?

Я новичок в haskell (впервые пробую FN программирование) и просто пробую различные упражнения из книги "реальный мир haskell". Может ли кто-нибудь, пожалуйста, исправить меня и сказать, оптимизирована ли функция ниже хвостового вызова или нет? Если да, то не могли бы вы поправить меня, как это делается? Я добавляю 1 к рекурсивной функции, поэтому я считаю, что это должно вызвать исключение stackoverflow? Я попытался вызвать myLength [1..2000000] но это не вызвало никакого исключения stackoverfl ...

Что Такое Оптимизация Хвостового Вызова?

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

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

У меня есть следующий фрагмент кода, который завершается со следующей ошибкой: RuntimeError: максимальная глубина рекурсии превысил Я попытался переписать это, чтобы обеспечить оптимизацию хвостовой рекурсии (TCO). Я считаю, что этот код должен был быть успешным, если бы имел место TCO. def trisum(n, csum): if n == 0: return csum else: return trisum(n - 1, csum + n) print(trisum(1000, 0)) должен ли я заключить, что Python не делает никакого типа TCO, или мне про ...

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

я почти понимаю, как работает хвостовая рекурсия и разница между ней и нормальной рекурсией. Я только не понимаю, почему это не требуется стек, чтобы помнить свой обратный адрес. // tail recursion int fac_times (int n, int acc) { if (n == 0) return acc; else return fac_times(n - 1, acc * n); } int factorial (int n) { return fac_times (n, 1); } // normal recursion int factorial (int n) { if (n == 0) return 1; else return n * factorial(n - 1); } после вызова самой функции ...

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

Я знакомлюсь с функциональным программированием [FP] (используя Scala). Одна вещь, которая выходит из моих первоначальных знаний, заключается в том, что FPs сильно зависит от рекурсии. А также кажется, что в чисто FPs единственный способ сделать итерационный материал-это написать рекурсивные функции. и из-за интенсивного использования рекурсии, похоже, следующее, о чем FPs пришлось беспокоиться, были StackoverflowExceptions обычно из-за длинных рекурсивных вызовов обмотки. Это было решаться вве ...

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

недавно я нашел презентацию о F# для программистов Python, и после просмотра его, решил реализовать решение "муравьиной головоломки" самостоятельно. есть муравей, который может ходить на плоской сетке. Муравей может двигаться по одному пространству за раз влево, вправо, вверх или вниз. То есть, из клетки (X, г) муравей может пройти в клетки (х+1, г), (х-1, У), (Х, Y+1), и (Х, Y-1). Точки, где сумма цифр координат x и y больше 25 недоступны для муравья. Например, точка (59,79) недоступна, потом ...

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

Как я могу сказать, если gcc (более конкретно, g++) оптимизирует хвостовую рекурсию в частности, функция? (Потому что это произошло несколько раз: я не хочу проверять, может ли gcc оптимизировать хвостовую рекурсию в целом. Я хочу знать, если он оптимизирует мой хвост рекурсивная функция.) Если ваш ответ "посмотрите на сгенерированный ассемблер", я хотел бы точно знать, что я ищу, и могу ли я написать простую программу, которая исследует ассемблер, чтобы увидеть, есть ли оптимизация. PS. Я ...