Презентация на тему Рекурсия


РЕКУРСИЯУчитель информатики Н.М. БорисоваГБОУ СОШ №249 С-Петербург РЕКУРСИЯСпособ обращения процедуры или функции к самой себе называется рекурсией.Вычисление факториала числа Числа ФибоначчиЗолотое сечение
Вычисление факториала числа Nn!=1*2*3*4*5…*n 1 , если n=1 (n-1)! n, если n>1 n! =5!= 1*2*3*4*5 =(1*2*3*4)*5 = 4! *515!= 1*2*3*…*15 =(1*2*..*14)*15 = = 14! * 15


function factorial(n: byte): longint;begin if n = 1 then factorial := 1 else factorial := n * factorial (n - 1);end; Вызов в программе: X:=factorial(5); write(X);120

PROGRAM FACTORIAL_2; {Вычисление с помощью процедуры} USES CRT; VAR N,I:BYTE; F:LONGINT; PROCEDURE FACTORIAL(N:BYTE; VAR F:LONGINT); begin IF N=1 THEN FACTORIAL:=1 ELSE begin FACTORIAL(N-1;F); F:=F*N; end; end; {-----------ОСНОВНАЯ ПРОГРАММА------------} BEGIN CLRSCR; WRITELN('ВЫЧИСЛЕНИЕ ФАКТОРИАЛА ЧИСЛА N'); WRITE('ВВЕДИТЕ N: '); READ(N); FOR I:=1 TO N DO begin FACTORIAL(I,F); WRITELN( I, '!=', F); endEND. Числа ФибоначчиВ 1202 году итальянский математик Фибоначчи решил такую задачу:Пара кроликов каждый месяц дает приплод двух кроликов(самца и самку), которые через два месяца способны давать новый приплод.Сколько кроликов будет через год, если в начале года имелась пара кроликов?
Чи́сла Фибона́ччи — элементы числовой последовательности1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610... в которой каждое последующее число равно сумме двух предыдущих чисел. Название по имени средневекового математика Леонардо Пизанского (или Фибоначчи) .



1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610... каждое последующее число равно сумме двух предыдущих чисел. Последовательность чисел Фибоначчи задается рекуррентным соотношением:F1 =1 F2 =1 Fn = Fn -1 + Fn - 2

Эта последовательность была исследована Леонардо Пизанским, известным как Фибоначчи, в его труде «Liber Abaci» (1202). Он рассматривает развитие идеализированной (биологически нереальной) популяции кроликов, предполагая что:В «нулевом» месяце имеется пара кроликов (0 новых пар).В первом месяце первая пара производит на свет другую пару (1 новая пара).Во втором месяце обе пары кроликов порождают другие пары и первая пара погибает (1 новая пара).В третьем месяце вторая пара и две новые пары порождают в общем три новые пары, а старая вторая пара погибает (2 новые пары).1,1,2,3,5,8…F(n) = F(n — 1) + F(n — 2). Function FIB ( n : integer ) :integer;begin if (n=1) or (n=2) then FIB:=1 else FIB:=FIB(n-2)+FIB(n-1)end; program fibonachchi;var i:integer; function fib(n:integer): longint;begin if n<=2 then fib:=1 else fib:=fib(n-1)+fib(n-2);end;begin for i:=1 to 12 do writeln('fib(', i, ') = ', fib(i) );end. PROGRAM KROLIKI; USES CRT; VAR N,I:INTEGER; FUNCTION FIB(N:INTEGER):INTEGER; begin IF (N=1) OR (N=2) THEN FIB:=1 ELSE FIB:=FIB(N-1)+FIB(N-2); end; {-----------ОСНОВНАЯ ПРОГРАММА------------} BEGIN CLRSCR; WRITELN('ЗАДАЧА ПРО КРОЛИКОВ (ЧИСЛА ФИБОНАЧЧИ)'); WRITE('ВВЕДИТЕ КОЛИЧЕСТВО МЕСЯЦЕВ: '); READ(N); FOR I:=1 TO N DO WRITELN(I,' = ',FIB(I)); END. Золотое сечение - это такое пропорциональное деление отрезка на неравные части, при котором весь отрезок так относится к большей части, как сама большая часть относится к меньшей; или другими словами, меньший отрезок так относится к большему, как больший ко всемуa : b = b : c или с : b = b : а.Золотое сечение Отрезки золотой пропорции выражаются бесконечной иррациональной дробью 0,618..., если c принять за единицу, a = 0,382. Числа 0.618 и 0.382 являются коэффициентами последовательности Фибоначчи. На этой пропорции базируются основные геометрические фигуры. Любой отрезок может быть разделен таким образом, что соотношение между его меньшей и большей частями будет равно отношению между большей частью и всем отрезком . Это отношение всегда равно 0.618. {Значение золотого сечения по заданному n} function sech(n:integer):real; begin sech:=fib(n)/fib(n-1); end;   var i : integer;   begin writeln('u(1) = ',fib(1)); for i:=2 to nmax do   writeln('u(',i,') = ',fib(i),'    v(',i,') = ',sech(i)); end. значение золотого сечения V(n) = u(n) / u(n-1) A:= A - BначалонетA  Bконецввод A,Bвывод AA> BB := B - AдаданетАлгоритм ЕвклидаОпределение наибольшего общего делителя ( НОД )двух натуральных чисел ЗадачаДаны три натуральных числа. Найти НОД наибольшего и наименьшего из этих чисел.ВВЕДИТЕ ТРИ ЧИСЛА: 18 24 36Наименьшее число: 18Наибольшее число: 36НОД(18,36)=9ВВЕДИТЕ ТРИ ЧИСЛА: 48 24 36Наименьшее число: 24Наибольшее число: 48НОД(24,48)=24
FUNCTION HOD(A,B:INTEGER):INTEGER; begin IF A=B THEN HOD:=A ELSE if A>B then HOD:=HOD(A-B,B) else HOD:=HOD(A,B-A); PROGRAM K8_V9_1;{Найти НОД наибольшего и наименьшего из трех чисел} USES CRT; VAR A, B, C, X, Y: INTEGER; FUNCTION MAX(X,Y:INTEGER):INTEGER; begin IF X<Y THEN MAX:=Y ELSE MAX:=X; end; FUNCTION MIN(X,Y:INTEGER):INTEGER; begin IF X<Y THEN MIN:=X ELSE MIN:=Y; end; FUNCTION HOD(A,B:INTEGER):INTEGER; begin IF A=B THEN HOD:=A ELSE if A>B then HOD:=HOD(A-B,B) else HOD:=HOD(A,B-A); end;BEGIN CLRSCR; WRITE('ВВЕДИТЕ ТРИ ЧИСЛА: '); READ(A,B,C); X:=MAX(A,MAX(B,C)); Y:=MIN(A,MIN(B,C)); WRITELN('HOD(',Y,',',X,')= ',HOD(X,Y))END.