Рекурсия — это такой способ организации вспомогательного алгоритма (подпрограммы), при котором эта подпрограмма (процедура или функция) в ходе выполнения ее операторов обращается сама к себе.
Пример задания: Выдать на печать в обратном порядке цифры целого положительного числа N.
Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Просмотр содержимого документа
«Презентация на тему "Рекурсия в Pascal" »
Необходимо найти среднее арифметическое двух чисел.
Program arifm;
Uses Crt;
Var A, B : integer; Rez :real;
Function SredArif(A, B:integer):real;
Begin
SredArif:=(A+B)/2;
End;
Begin
ClrScr;
write('Введите два числа ');
readln(A,B);
Rez:=SredArif(A,B);
write('Cреднее арифметическое этих чисел равно ',Rez:5:3);
read key ;
End.
Среди трехзначных чисел найти такие , в которых сумма факториалов цифр равнялась бы самому числу .
Program faktor;
var a,b,c,i,s1,s2,s3:integer;
procedure fakt(x:integer; var s:integer);
var i:integer;
begin
s:=1;
for i:=1 to x do
s:=s*i;
end;
begin
for i:=100 to 999 do
begin
a:=i div 100; b:=(i-a*100) div 10; c:=i - a*100 - b*10;
fakt(a,s1);
fakt(b,s2);
fakt(c,s3);
if s1+s2+s3=i then writeln (i);
end;
end.
Процедуры и функции. Рекурсия
Выдать на печать в обратном порядке цифры целого положительного числа N.
program one;
uses Crt;
PROCEDURE REVERSE (N: integer);
Begin
Write (N mod 10);
If (N Div 10)0 Then REVERSE (N Div 10)
END;
var n: integer;
begin clrscr;
Write('n=');
readln(n);
reserve(n);
readkey
end.
1 then convert(z div 8); write(z mod 8); end; begin writeln(‘введите десятичное число'); readln(z); write( ‘соответствующее восьмеричное число = '); convert(z); readkey end." width="640"
Рекурсивная процедура convert переводит десятичное число z в восьмеричную систему путем деления его на 8 и выдачи остатка в обратной последовательности.
Program konvert; uses crt;
var z:integer;
procedure convert(z:integer);
begin
if z 1 then convert(z div 8);
write(z mod 8);
end;
begin
writeln(‘введите десятичное число');
readln(z);
write( ‘соответствующее восьмеричное число = ');
convert(z);
readkey
end.
=10) do begin n:=n div 10; k:=k+1; end; str:=k; end; var n: longint; begin clrscr; Write('n='); readln(n); write (str( ‘ количество цифр ’ , n)); readkey end." width="640"
Построить программу подсчета количества цифр заданного натурального числа
program one;
uses Crt;
function str(n:longint):integer;
Var k: integer;
begin
k:=1;
while (n=10) do begin
n:=n div 10;
k:=k+1; end; str:=k; end;
var n: longint;
begin clrscr;
Write('n=');
readln(n);
write (str(‘количество цифр’, n));
readkey
end.
=10) do begin k:=k+1;n:=n div 10; str(n,k,l); end; l:=k; end; var n: longint; k,l: integer; begin clrscr; Write('n='); readln(n); k:=1; str(n,k,l); write (l); readkey end." width="640"
Использую рекурсивную подпрограмму, построить программу подсчета количества цифр заданного натурального числа
program one;
uses Crt;
procedure str(n:longint; k: integer; var l:integer);
begin
while (n=10) do begin k:=k+1;n:=n div 10; str(n,k,l); end;