Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Алгоритмы > Корекурсия? |
Автор: macos 5.4.2011, 18:10 |
Привет! Нашел недавно в Вики инфо про корекурсию, ко-данные и тд, стало интересно. Не врубаюсь, что такое корекурсия совсем... Пишут, что дуальное понятие к рекурсии , в Вики неясно полностью. Гуглил, писали, что это некий вид оптимизированный рекурсии, где нет древа повторных вычислений.... А другие сайты просто украли инфу с Вики... и как бы не знаю, где найти норм инфу... Прошу помочь! Заранее спасибо! |
Автор: baldina 5.4.2011, 18:49 | ||||
рекурсия:
мы определили факториал числа n корекурсия:
мы определили факториал как бесконечный список (здесь :: - операция конкатенации списков, head и tail соответственно первый элемент и хвост cписка, т.е. список list это то же что и list.head :: list.tail) последнее возможно, если поддерживается механизм ленивых вычислений, т.е. вычисление аргумента производится только при необходимости дуальность заключается в том, что рекурсия и корекурсия (так же как данные и коданные) суть одно и то же, только по-разному ![]() рекурсия обрабатывает конечные структуры (и требует признака останова типа n==0) корекурсии нужно начальное значение, а признак останова не нужен, т.к. вычисляется сколько требуется в значительной степени поддерживается функциональными языками (они обычно содержат ленивые вычисления), но и в императиве может быть смоделировано, напр. итераторами |