Тут скорей всего вопрос в том, что нет прямого механизма, который бы позволил самостоятельно развернуть рекурсивный алгоритм в tail recursion, поэтому решение на пользователе языка, так сказать
Тут скорей всего вопрос в том, что нет прямого механизма, который бы позволил самостоятельно развернуть рекурсивный алгоритм в tail recursion, поэтому решение на пользователе языка, так сказать
Я честно говоря механику не слишком хорошо понимаю. Но суть в том, что если вызов в хвостовой позиции, то нам не нужно стэк накапливать. И это справделиво не только в рамках одной функции, можно и между функциями так делать
Я честно говоря механику не слишком хорошо понимаю. Но суть в том, что если вызов в хвостовой позиции, то нам не нужно стэк накапливать. И это справделиво не только в рамках одной функции, можно и между функциями так делать
Не знаю, в рантайме этот анализ делается или в компайл тайме
Я честно говоря механику не слишком хорошо понимаю. Но суть в том, что если вызов в хвостовой позиции, то нам не нужно стэк накапливать. И это справделиво не только в рамках одной функции, можно и между функциями так делать
да, стек в этом случае не нужен, такая штука однозначно в цикл while какой нибудь переписывается
это макрос, он просто смотрит в код и говорит "ай ай, ты recur дергаешь не последним" З.Ы. ему видимо за этим и нужно + 2 слова (loop и recur), чтобы рекурсивные вызовы явно обозначить