Использование рекурсивных вызовов в программах на языке Си. Лясин Д.Н - 6 стр.

UptoLike

Составители: 

6
Необходимо правда отметить, что при программной реализации
алгоритма вычисления i-го числа Фибоначчи использование рекурсии
будет неэффективным в связи с избыточными повторными
вычислениями для формирования чисел i-1 и i-2. Эффективнее здесь
использовать приемы динамического программирования, рассмотрение
которых выходит за рамки данных методических указаний.
Замечательным примером рекурсивного (причем бесконечного)
построения объекта, являются фракталы. Фракталэто бесконечно
самоподобная геометрическая фигура, каждый фрагмент которой
повторяется при уменьшении масштаба. На рис. 2 можно увидеть
графическое представление множества Мандельброта, определение
которого рекурсивно, так как использует для вычисления новых
координат точки z на комплексной плоскости их предыдущие значения:
z=z
2
+c
Рисунок 2. Множество Мандельброта.
Более тривиален принцип построения кривой Коха (рис.3): берём
единичный отрезок, разделяем на три равные части и заменяем средний
интервал равносторонним треугольником без этого сегмента. В
результате образуется ломаная, состоящая из четырех звеньев длины 1/3
от начального. На следующем шаге повторяем операцию для каждого из
четырёх получившихся звеньев и т. д
f
n
=
1, если n=1 или n=2;
f
n
-
1
+f
n
-
2
, если n>2
                  1, если n=1 или n=2;
         f n=
                  fn-1+fn-2, если n>2
     Необходимо правда отметить, что при программной реализации
алгоритма вычисления i-го числа Фибоначчи использование рекурсии
будет неэффективным в связи с избыточными повторными
вычислениями для формирования чисел i-1 и i-2. Эффективнее здесь
использовать приемы динамического программирования, рассмотрение
которых выходит за рамки данных методических указаний.
     Замечательным примером рекурсивного (причем бесконечного)
построения объекта, являются фракталы. Фрактал — это бесконечно
самоподобная геометрическая фигура, каждый фрагмент которой
повторяется при уменьшении масштаба. На рис. 2 можно увидеть
графическое представление множества Мандельброта, определение
которого рекурсивно, так как использует для вычисления новых
координат точки z на комплексной плоскости их предыдущие значения:
     z=z2+c




      Рисунок 2. Множество Мандельброта.
      Более тривиален принцип построения кривой Коха (рис.3): берём
единичный отрезок, разделяем на три равные части и заменяем средний
интервал равносторонним треугольником без этого сегмента. В
результате образуется ломаная, состоящая из четырех звеньев длины 1/3
от начального. На следующем шаге повторяем операцию для каждого из
четырёх получившихся звеньев и т. д…




                                    6