Он ее любил. …
посмотреть… встаньте между двумя зеркалами и смотрите…(не детали гардероба, нет. Отражение себя, там …)
нарисовать… нарисуйте себя, где на полотне вы рисуете себя, где на полотне…
Ее можно:
Это примеры «бесконечной» рекурсии…
FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.
Email: Нажмите что бы посмотреть
Ее можно:
Это примеры «бесконечной» рекурсии…
При использовании рекурсии необходимо обеспечить выход из подпрограммы в нужный момент, т.к. алгоритм должен быть конечным (одно из свойств).
Function factorial
Begin
factorial:= 4* factorial(3);
End;
Function factorial
Begin
factorial:= 2* factorial(1);
End;
Function factorial
Begin
factorial:= 3* factorial(2);
End;
Function factorial
Begin
factorial:= 1;
End;
3 вызов (n=3)
2 вызов (n=4)
4 вызов (n=2)
5 вызов (n=1)
1 вызов (n=5)
2 *1
5 *24
4 *6
3 *2
factorial(5) = 120
α:= 120
Procedure Rec
begin
Rec(n Div 2);
Write(n Mod 2);
End;
Procedure Rec
begin
Rec(n Div 2);
Write(n Mod 2);
End;
Procedure Rec
begin
Rec(n Div 2);
Write(n Mod 2);
End;
Procedure Rec
begin
Write(n Mod 2);
End;
2 вызов (n = 19)
3 вызов (n = 9)
4 вызов (n = 4)
6 вызов (n = 1)
5 вызов (n = 2)
Данная программа раскрывает недостатки рекурсии:
с увеличением n глубина рекурсии многократно (во сколько?) увеличивается и выполняемая программа потребует много памяти, что может привести к переполнению стека.
Если при решении есть выбор между итерацией и рекурсией, то предпочтительным выбором является итерация.
function fibon(nf:integer):longint;
begin
f1:=1; f2:=1;
for i:=3 to n do
begin f:=f1+f2;
f1:=f2; f2:=f;
end;
fibon:=f;
end;
function fib(nf:integer):longint;
begin
if (nf=1) or (nf=2) then fib:=1
else fib:=fib(nf-1)+fib(nf-2);
end;
Итерацией:
Рекурсией:
Измените процедуру. Сформируйте число-«перевертыш». Выдайте сообщение, является ли введенное число палиндромом