Страница 1 из 1

Добавлено: Пн июн 06, 2005 01:42
Симба
Что такое Рекурсия? Решил я проискать в энциклопедии и там когда нашёл слово «Рекурсия» под ним было сказанно


[off]добавлено спустя 1 минуту:[/off]

:cry: А цвета всё равно не работают :cry:

Добавлено: Вт июн 07, 2005 21:08
PunKersha
огооо
это ж надо до такого додуматься

Добавлено: Ср июн 08, 2005 12:06
Симба
PunKersha,
Страшно?

Добавлено: Пн июн 27, 2005 19:30
ZWERI
:?

Добавлено: Вс фев 04, 2007 19:57
Goldenerblitz
Да я сам рекурсия...

Добавлено: Вс фев 04, 2007 20:02
Кирк
Goldenerblitz,
А шо це таке?

Добавлено: Вс фев 04, 2007 20:07
Goldenerblitz
да х3... :roll:

Добавлено: Вс фев 04, 2007 21:54
M@li4iK
Вообщето рекурсия, это когда в теле функции задана голова функции! Что-собственно и представлено на рисунке!

Добавлено: Пн фев 05, 2007 07:22
Симба
<a href=https://bugaga.ru/jokes/ target=_blank>прикол</a> в том, что у функции есть одно единственное решение для самого простого частного случая проблемы и если решение не сработало (скажем для более усложнённой проблеммы) тогда мы делим прроблему на на две под пролемы (как буд-то разлогаем выражение на множители) и решаем каждую разложенную по оодельности.

То есть если мы возовим функцию «Решается?» для проверки можно ли решить проблему и передаим ей для проверки «(проблема)» то тогда если фунция не сможет решить проблему за одно действие — она разложит её на две подпроблемы и вызовит сама себа чтобы решить каждое из подпроблем и так до бесконечности пока она не найдёт точный ответ на вопро решается ли проблема: да или нет

Код: Выделить всё

Решается?(проблема)
{
  действие;
  если_правда (проблема = решена)
  {
    вернуть ("правду");
    завершить_Фунцию;
  }
  // Если проблема не решилась простым способом то тогда
  // Разабьём её на под проблемы и попытаемся решить их точно так же…
  разбить проблему на две подпроблемы;

  если_правда( Решается?(под_проблема_1) или Решается?(под_проблема_2) )
  {
    вернуть ("правду");
    завершить_Фунцию;
  }
  в_противном_случаяи
  {
    вернуть("горе и несчастье");
  }
}
В реальности мало где применяются рекурсивные решения. Обычно только для таких задач которые нельзя решить линейным, обыкновенным решением. И на это есть пара весомых аргументов: вызов и выполнение функции значительно медление выполнения базовых команд и в линейных решениях как правило обьём памяти рабочий функции не возрастает, а в рекурсии каждый повторный вызов функции заставляет копм резервировать для неё такой же обьём памяти (для перемменых).

Пример использования рекурси в — MS Paint`е когда вы „заливаете“ какое нибудь пространство одним цветом.
Можите сами проверить низкую ефиктивность рекурсии. Создайте новый рисунок с большим разрешением и залейте его одим цветом. Быстро залили? А теперь нарисуйте на нем сложный лабиринтно-образный обьект так, что его площадь будет хотя бы половыину от всего размера но чтоб у него было как можно меньше ровных линий и много муссора — разных пиксилей от, (спрея например), и тогда вам покажеться, что MS Paint тормозит при заливки более меньшой площади.

[off]P.S.
На самом деле действий для решения базовой (фундаментальной) проблемы может быцть более одного.[/off]

Добавлено: Пн фев 05, 2007 07:55
жена бэтмэна
блин! ничё не поняла..... :cranky:

Добавлено: Пн фев 05, 2007 10:44
Симба
Грубо говоря это принцип решений который аналогичен тому как в матиматике из a(b+c+1) получается ab + ac – a

Добавлено: Пн фев 05, 2007 12:22
жена бэтмэна
о! а вот так понятно!

Добавлено: Пн фев 05, 2007 14:23
Goldenerblitz
Симба,
ну псиб 4то обеснил!