Сергей Сергеевич Лебедев
Меню сайта
Категории каталога
Мои статьи [21]
В разработке [1]
Наш опрос
Какими операционными системами Вы пользуетесь
Всего ответов: 100
Главная » Статьи » Мои статьи

Графическое воплощение рекурсии
Сергей Сергеевич Лебедев
Старший преподаватель
Ирина Юрьевна Зобова
Студентка 2 курса
Коряжемский филиал ГОУ ВПО «ПГУ им. М.В. Ломоносова»
165651, Архангельская область
г. Коряжма, пр. Ленина 9
тел.:8 (250) 3-09-65
8 (250) 5-73-66
e-mail: kfpgui@atnet.ru
 
ГРАФИЧЕСКОЕ ВОПЛОЩЕНИЕ РЕКУРСИИ
    Некоторые программисты считают (и не без оснований), что рекурсия – это сердце и душа программирования. Идеи рекурсии известны людям издавна. Рекурсивные определения как мощный аналитический аппарат используются во многих областях науки, особенно в математике. Рекурсивный метод очень удобен для вычисления рядов, в которых каждый последующий член зависит от предыдущего.
    Не менее интересно рассмотреть графическое воплощение рекурсии, которое представляется фрактальной графикой.
    Представляем графическую реализацию рекурсивной процедуры, для построения узора на основе примитива «окружность» (см. рис. 1). Программа для построения данного узора была специально разработана для учебного исполнителя «Черепашка». Особенность данного исполнителя в том, что для написания программ используется русифицированная упрощенная версия языка Си.
Рисунок 1 Узор «Кольца»
Рисунок 1 Узор «Кольца»
Приводим код программы:
Кольца
{
дробные n, r=150, x=300, y=-300;
вывод "Введите глубину рекурсии";
ввод n;
в_точку (x, y);
rings (n, r, x, y);
}

ring (дробные r, дробные x, дробные y)
{
в_точку ( x, y );
опусти_перо;
окружность ( r );
подними_перо;
}

rings (дробные n, дробные r, дробные x, дробные y)
{
если ( n = = 1 )
  {
  ring (r, x, y);
  }
иначе
  {
  rings (n-1, r/2, x+r*2, y);
  rings (n-1, r/2, x-r*2, y);
  rings (n-1, r/2, x, y-r*2);
  rings (n-1, r/2, x, y+r*2);
  ring(r, x, y);
  }
}

В данной программе построение узора происходит на рекурсивном возврате. Если процедуру «rings» представить ниже указанным способом, то построение будет происходить на рекурсивном спуске. Второй вариант процедуры «rings»:
rings (дробные n, дробные r, дробные x, дробные y)
{
если ( n = = 1 )
  {
  ring (r, x, y);
  }
иначе
  {
  ring(r, x, y);
  rings (n-1, r/2, x+r*2, y);
  rings (n-1, r/2, x-r*2, y);
  rings (n-1, r/2, x, y-r*2);
  rings (n-1, r/2, x, y+r*2);
  }
}
Категория: Мои статьи | Добавил: Сергей_Лебедев (19.12.2008)
Просмотров: 1048 | Комментарии: 1 | Рейтинг: 0.0/0 |
Всего комментариев: 1
0
1 mAcSUS_pro   [Материал]
вот эта вещь мне понравилась, когда мы её писали... интересно

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Поиск
Друзья сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Copyright С.С. Лебедев © 2020Конструктор сайтов - uCoz