На днях сёрфил глобальное пространство в поисках полезных вещей и наткнулся на статью, которая мне показалась в высшей степени замечательной. Такие вещи как рекурсия и продолжения (continuations) далеко не самые простые вещи в программировании, но вместе с ней мы с вами сможем сделать ещё один шаг в их понимании. Материал достаточно объемный, поэтому будет разбит на несколько частей. В этой части немного о рекурсии и TCO (tail-call optimization) Ссылка на источник в конце заметки. Вторая часть Заключительная...
Рекурсия - одна из самых сложных для понимания тем. Но, разобравшись в этой теме, можно открыть для себя массу возможностей. Тот, кто понимает рекурсию - владеет очень мощным инструментом. Рекурсия — прием, когда функция может вызывать сама себя. Для изучения рекурсии обычно используют задачу вычисления факториала числа N. Это 1*2*3*...*N. Так как в такой последовательности число N умножается на произведение всех чисел меньше N, факториал легко можно записать в рекурсивном виде: Факториал(N) = N * Факториал(N-1) Напишем функцию факториала на питоне: Строка 3 - это точка выхода из рекурсии...