История изменений
Исправление
vertexua,
(текущая версия)
:
i = <data set>
while (!computation_complete(i)){
i = perform_computation(i);
}
def cycle(i) =
if (!computation_complete(i)) cycle(perform_computation(i))
else i
cycle(<data set>)
Не вижу фундаментальной разницы и даже темы разговора. Вот показал как формально любой цикл переводится в хвостовую рекурсию и обратно. 4 строчки в 4 строчки. Вместо <data_set> подставьте любой набор переменных.
В качестве бесплатного бонуса получаете возможность написать юнит-тест для одной итерации цикла.
Исходная версия
vertexua,
:
i = <data set>
while (!computation_complete(i)){
i = perform_computation(i);
}
def cycle(i) =
if (!computation_complete(i)) cycle(perform_computation(i))
else i
cycle(<data set>)
Не вижу фундаментальной разницы и даже темы разговора. Вот показал как формально любой цикл переводится в хвостовую рекурсию и обратно. Вместо <data_set> подставьте любой набор переменных.
В качестве бесплатного бонуса получаете возможность написать юнит-тест для одной итерации цикла.