Идея рекурсии упорно не лезет мне в голову.
Не, определение я выучила и все слова в нем понимаю, но применять метод могу с большим трудом, и, когда надо решить задачу, думаю о нем только в последнюю очередь, и то, обычно, безуспешно. Мне и в жизни не близка идея копать вглубь "от забора до обеда". Гораздо больше нравятся "циклы", когда мы делаем определенное число шагов, и каждый шаг приближает ксветлому будущему намеченной цели.

Не, определение я выучила и все слова в нем понимаю, но применять метод могу с большим трудом, и, когда надо решить задачу, думаю о нем только в последнюю очередь, и то, обычно, безуспешно. Мне и в жизни не близка идея копать вглубь "от забора до обеда". Гораздо больше нравятся "циклы", когда мы делаем определенное число шагов, и каждый шаг приближает к

no subject
Date: 2011-02-12 01:12 pm (UTC)no subject
Date: 2011-02-12 01:34 pm (UTC)Помнится, когда я ее осваивала, мне было ценно осознать, что цикл - это "взгляд сверху", а рекурсия - "взгляд изнутри". И еще важно понимать, что ты знаешь о своем текущем состоянии на каждом шаге, какими свойствами обладает последний шаг и где хранится то, что ты знаешь о предыдущих шагах.
no subject
Date: 2011-02-12 02:25 pm (UTC)no subject
Date: 2011-02-12 07:07 pm (UTC)no subject
Date: 2011-02-12 07:10 pm (UTC)no subject
Date: 2011-02-12 07:11 pm (UTC)no subject
Date: 2011-02-12 11:36 pm (UTC)чтобы понять рекурсию надо понять рекурсию
Date: 2011-02-13 01:09 am (UTC)например обход дерева который печатает все узлы (у каждого узла есть левый и правый):
Обойти_Дерево(узел){ если узел не пуст { Обойти_Дерево(узел.левый) напечатать(узел) Обойти_Дерево(узел.правый) } }тут мы нашли две подзадачи (обойти левый и правый узел) и собственно задачу которую мы решаем это печатанье. окончание рекурсии гарантируется условием "узел не пуст"
с циклом мне кажется очень трудно решить такую задачку.
и еще шутка про рекурсию:
(выписка из расписания колледжа)
no subject
Date: 2011-02-13 06:13 am (UTC)no subject
Date: 2011-02-13 10:08 am (UTC)no subject
Date: 2011-02-13 10:09 am (UTC)Re: чтобы понять рекурсию надо понять рекурсию
Date: 2011-02-13 10:19 am (UTC)Да, дерево действительно легко обойти рекурсией. Я забыла, мы же в дереве не знаем, сколько у нас узлов, да?
Расписание смешное :)))
Re: чтобы понять рекурсию надо понять рекурсию
Date: 2011-02-13 05:49 pm (UTC)мне кажется надо просто нарешать много задач, но мне уже тяжело конечно это вспомнить.
есть игрушка на использование рекурсии, я как-то провел много долгих зимних вечеров: http://www.robozzle.com/
там очень простой графический язык программирования и нет никаких переменных, поэтому только рекурсией и приходится обходиться (часто, правда, бесконечной).
Re: чтобы понять рекурсию надо понять рекурсию
Date: 2011-02-13 08:39 pm (UTC)no subject
Date: 2011-02-13 09:02 pm (UTC)no subject
Date: 2011-02-13 09:17 pm (UTC)Лично у меня рекурсия проблем не вызвала. Но сталкнулся с очень сильным неприятием рекурсии у разработчиков электроники.
Может быть поможет изучение реализации рекурсии без рекурсии в лямбда-исчислении (через Y-комбинатор) и медитация над ленивыми списками языка Haskell, типа чисел Фибаначчи: fib = 1:1:(zipWith (+) fib (tail fib)).
Может стоит ознакомиться с контекстно-свободными граматиками Хомского - там идея рекурсии достаточно наглядна.
Еще рекомендую Гёдель, Эшер, Бах: эта бесконечная гирлянда и, повторюсь - SICP. :-)
no subject
Date: 2011-02-14 08:36 am (UTC)Чтойта? ;)
no subject
Date: 2011-02-14 08:45 am (UTC)И не надо к орфографии придираться - правила написания заимствованных слов в школе нас не учили.
no subject
Date: 2011-02-14 08:57 am (UTC)На самом деле шутка в том, что любые задачи можно сводить к таким же, но менее сложным задачам (например, задача для дерева с n вершинами сводится к задачам для деревьев с меньшем числом вершин). Наиболее естественно получается с объектами, изначально заданными рекурсивно (например, с деревом: (бинарное) дерево — это либо одиночная вершина, либо вершина, к которой присоединены левое поддерево и правое поддерево). Для других задач могут потребоваться технические ухищрения.
А вот думать над тем, как это делает компьютер, не надо (точнее, можно, но потом). Просто задайтесь вопросом "а как эту задачу свести к более простой (т.е. меньшего размера)".
Re: чтобы понять рекурсию надо понять рекурсию
Date: 2011-02-14 09:00 am (UTC)Ааааа! :)