Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Корекурсия? Что это , чем отличается от рекурсии? 
:(
    Опции темы
macos
  Дата 5.4.2011, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 5.4.2011

Репутация: нет
Всего: нет



Привет!

Нашел недавно в Вики инфо про корекурсию, ко-данные и тд, стало интересно.

Не врубаюсь, что такое корекурсия совсем... Пишут, что дуальное понятие к рекурсии , в Вики неясно полностью.

Гуглил, писали, что это некий вид оптимизированный рекурсии, где нет древа повторных вычислений.... А другие сайты просто украли инфу с Вики... и как бы не знаю, где найти норм инфу...

Прошу помочь!

Заранее спасибо!
PM MAIL   Вверх
baldina
Дата 5.4.2011, 18:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 4
Всего: 101



рекурсия:
Код

factorial(n) := if (n==0) 1 else n * factorial(n-1)
val f = factorial(5) //  factorial от аргумента 5

мы определили факториал числа n

корекурсия:
Код

factorial := 1 :: factorial.head * (factorial.head+1) :: factorial.tail.tail
val f = factorial(5) // 5й элемент списка

мы определили факториал как бесконечный список (здесь :: - операция конкатенации списков, head и tail соответственно первый элемент и хвост cписка, т.е. список list это то же что и list.head :: list.tail)

последнее возможно, если поддерживается механизм ленивых вычислений, т.е. вычисление аргумента производится только при необходимости

дуальность заключается в том, что рекурсия и корекурсия (так же как данные и коданные) суть одно и то же, только по-разному  smile 
рекурсия обрабатывает конечные структуры (и требует признака останова типа n==0)
корекурсии нужно начальное значение, а признак останова не нужен, т.к. вычисляется сколько требуется

в значительной степени поддерживается функциональными языками (они обычно содержат ленивые вычисления),
но и в императиве может быть смоделировано, напр. итераторами
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0643 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.