Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Топ:
Основы обеспечения единства измерений: Обеспечение единства измерений - деятельность метрологических служб, направленная на достижение...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Уполаживание и террасирование склонов: Если глубина оврага более 5 м необходимо устройство берм. Варианты использования оврагов для градостроительных целей...
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
В отличие от итерации, рекурсия не является существенной для программирования на PL/SQL. Любая проблема, которая может быть решена рекурсией, может быть решена и итерацией. Далее, концепцию итерации легче усвоить, поскольку примеры рекурсии не столь часты в повседневной жизни. Как следствие, итеративную версию подпрограммы обычно легче спроектировать, чем рекурсивную версию той же программы. Однако рекурсивная версия обычно проще, меньше, и потому ее легче отладить. Сравните следующие функции, которые вычисляют n-й член ряда Фибоначчи:
-- рекурсивная версия
FUNCTION fib (n POSITIVE) RETURN INTEGER IS
BEGIN
IF (n = 1) OR (n = 2) THEN
RETURN 1;
ELSE
RETURN fib(n - 1) + fib(n - 2);
END IF;
END fib;
-- итеративная версия
FUNCTION fib (n POSITIVE) RETURN INTEGER IS
pos1 INTEGER:= 1;
pos2 INTEGER:= 0;
cum INTEGER;
BEGIN
IF (n = 1) OR (n = 2) THEN
RETURN 1;
ELSE
cum:= pos1 + pos2;
FOR i IN 3..n LOOP
pos2:= pos1;
pos1:= cum;
cum:= pos1 + pos2;
END LOOP;
RETURN cum;
END IF;
END fib;
Рекурсивная версия функции fib более элегантна. Однако итеративная версия эффективнее; она работает быстрее и использует меньше памяти. Причина этого в том, что каждый рекурсивный вызов требует дополнительного времени и памяти. Чем больше число рекурсивных вызовов, тем больше разница в эффективности. Тем не менее, если вы ожидаете, что число рекурсивных вызовов будет невелико, можно предпочесть рекурсивную версию из-за ее читабельности.
Реализация построения кривой Гильберта.
На рисунке кривые первого, второго и третьего порядка.
§ Каждый последующий порядок образуется с предыдущем
§ При переходе на следующий уровень вершины уменьшаются в два раза.
Правило построение кривой:
А
В
С
D
Для реализации, А = gl, B=gu, C = gr, D = gd.
program z1;
uses crt,graph;
var a,h,s,ex,x,y,r,d,gm,o:integer;
procedure gd(n:integer);forward;
procedure gu(n:integer);forward;
procedure gr(n:integer);forward;
procedure gl(n:integer);
begin
if n>0 then
begin
gd(n-1);x:=x-h;LineTo(x,y);
gl(n-1);y:=y+h;LineTo(x,y);
gl(n-1);x:=x+h;LineTo(x,y);
gu(n-1);
end;
end;
procedure gu(n:integer);
begin
if n>0 then
begin
gr(n-1);y:=y-h;LineTo(x,y);
gu(n-1);x:=x+h;LineTo(x,y);
gu(n-1);y:=y+h;LineTo(x,y);
gl(n-1);
end;
end;
procedure gr(n:integer);
begin
if n>0 then
begin
gu(n-1);x:=x+h;LineTo(x,y);
gr(n-1);y:=y-h;LineTo(x,y);
gr(n-1);x:=x-h;LineTo(x,y);
gd(n-1);
end;
end;
procedure gd(n:integer);
begin
if n>0 then
begin
gl(n-1);y:=y+h;LineTo(x,y);
gd(n-1);x:=x-h;LineTo(x,y);
gd(n-1);y:=y-h;LineTo(x,y);
gr(n-1);
end;
end;
function pow2(a:integer):integer;
var i,p:integer;
begin
p:=1;
for i:=1 to a do p:=p*2;
pow2:=p;
end;
begin clrscr;
ex:=1;
while ex=1 do
begin
write('Input Grade Of Graphic ');readln(a);
write('Side of square');readln(s);
write('Orientation(1-u,2-r,3-d,4-l)');readln(o);
d:=Detect;
InitGraph(d,gm,'');
s:=round(s*GetMaxY/100);
h:=round(s/(pow2(a)-1));
x:=GetMaxX div 2;
y:=GetMaxY div 2;
r:=s div 2;
case o of
1: begin
x:=x - r;
y:=y + r;
moveto(x,y);
gu(a);
end;
2:begin
x:=x - r;
y:=y + r;
moveto(x,y);
gr(a);
end;
3: begin
x:=x + r;
y:=y - r;
moveto(x,y);
gd(a);
end;
4: begin
x:=x + r;
y:=y - r;
moveto(x,y);
gl(a);
end;
end;
readln;
closegraph;
Writeln('Proceed? (1/0)');
readln(ex);
end;
end
.
|
|
|
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!