Рабочие листы
к вашим урокам
Скачать
1 слайд
РЕКУРСИЯ
2 слайд
Процедуры и функции
Процедура( функция) представляет собой последовательность операторов, которая имеет имя, список параметров и может быть вызвана из различных частей программы.
Имя процедуры в тексте программы называется вызовом.
Вызов активирует процедуру (функцию) - начинают выполняться её операторы.
После выполнения процедуры программа продолжается с оператора стоящего за вызовом.
Отличие процедур от функций в том, что функции возвращают значение.
3 слайд
Описание процедур и функций
Все процедуры или функции должны быть описаны в разделе описаний основной программы.
Описание процедуры имеет вид:
procedure имя (список формальных параметров);
раздел описаний локальных параметров
begin
операторы тела процедуры
end;
Описание функции имеет вид:
function имя (список формальных параметров): тип значения функции;
раздел описаний локальных параметров
begin
операторы тела функции
end;
4 слайд
Параметры процедур и функций
Список формальных параметров состоит из одной или нескольких секций, разделенных символом " ; ".
Секция состоит из списка переменных, перечисляемых через запятую, знака “:” и типа.
Секция может предваряться служебным словом var - тогда параметры передаются по ссылке,
(экономия памяти и времени).
Если var отсутствует параметры передаются значениями.
Список формальных параметров вместе с окружающими скобками может отсутствовать.
5 слайд
Что такое рекурсия?
Рекурсия – это функция (процедура) вызывающая саму себя
Может ли рекурсия заменить цикл?
Да.
6 слайд
Определение рекурсии
Рекурсия — это такой способ организации вспомогательного алгоритма (подпрограммы), при котором эта подпрограмма (процедура или функция) в ходе выполнения ее операторов обращается сама к себе. Вообще, рекурсивным называется любой объект, который частично определяется через себя.
7 слайд
Program n1;
uses crt;
procedure Rec(i: integer);
begin
if i>1 then Rec(i-1);
writeln(i);
end;
begin
clrscr;
Rec(5);
end.
рекурсивный подъём
Процедура закрывается и выводится i
Пока i больше 1 вызываем следующую процедуру
рекурсивный подъём
8 слайд
Вызов Rec(5)
Вызов Rec(4)
Вызов Rec(3)
Вызов Rec(2)
Вызов Rec(1)
Вывод (1)
Вывод (2)
Вывод (3)
Вывод (4)
Вывод (5)
i>1
i
Rec(i-1)
5
4
3
2
1
5>1 Да
4>1 Да
3>1 Да
2>1 Да
1>1 Нет
Rec(4)
Rec(3)
Rec(2)
Rec(1)
Вывод(1)
рекурсивный подъём
9 слайд
Процедура 5
Процедура 4
Процедура 3
Процедура 2
Процедура 1
Вывод 5
Вывод 4
Вывод 3
Вывод 2
Вывод 1
Пока i>1 то вызываем очередную
процедуру
Рекурсивный подъем
рекурсивный подъём
10 слайд
Program n2;
uses crt;
procedure Rec(i: integer);
begin
writeln(i);
if i>1 then Rec(i-1);
end;
begin
clrscr;
Rec(5);
end.
рекурсивный спуск
Вывод
Переход к следующей процедуре
рекурсивный спуск
11 слайд
i>1
Вывод i
Rec(i-1)
5
4
3
2
1
5>1 Да
4>1 Да
3>1 Да
2>1 Да
1>1 Нет
Rec(4)
Rec(3)
Rec(2)
Rec(1)
Rec(i)
Rec(5)
Rec(4)
Rec(3)
Rec(2)
Rec(1)
рекурсивный спуск
12 слайд
Процедура 4
Процедура 3
Процедура 2
Процедура 1
Процедура 5
Вывод 5
Вывод 4
Вывод 3
Вывод 2
Вывод 1
Пока i>1 то вызываем очередную
процедуру
Рекурсивный спуск
рекурсивный спуск
13 слайд
Program n3;
Uses crt;
Procedure Print(n:integer);
Begin
Writeln ('У попа была собака,');
Writeln ('Он ее любил.');
Writeln ('Она съела кусок мяса —');
Writeln ('Он ее убил.');
Writeln ('Убил и закопал');
Writeln ('И на могиле написал:');
if n>1 then Print(n-1);
End;
BEGIN
Print(4);
END.
рекурсивный спуск
Вывод
Переход к следующей процедуре
рекурсивный спуск
14 слайд
Program n4;
uses crt;
procedure Rec(i: integer);
begin
writeln(i);
if i>1 then Rec(i-1);
writeln(i);
end;
begin
clrscr;
Rec(5);
end.
рекурсивный спуск,
и рекурсивный подъем
Спуск
Подъем
рекурсивный спуск и подъем
15 слайд
Задачи ЕГЭ (рекурсии)
задание №11
Ниже на пяти языках программирования записан рекурсивный алгоритм F.
Чему равна сумма всех чисел, напечатанных на экране при выполнении вызова F(1)?
16 слайд
Решение
Первым действием процедура F(1) выведет число 1. Далее процедура F(1) вызовет процедуру F(n + 1), в результате выполнения которой на экране появится число n + 1 = 2. Процедура F(2) вызовет процедуру F(3), которая выведет на экран число 3 и вызовет процедуру F(4), которая выведет на экран число 4 и вызовет F(5), которая выведет на экран число 5.
После этого управление вернётся к процедуре F(4), которая начнёт выполнять следующий шаг своего алгоритма, т. е. обратиться к процедуре F(n + 3) = F(7). Процедура F(7) выведет на экран число 7. Далее управление вернётся к процедуре F(3). Рассуждая аналогично приходим к выводу, что процедура F(3) дополнительно выведет на экран число 6, процедура F(2) — 5.
Последним действием процедуры F(1) будет вызов процедуры F(n + 3) = F(4), которая выведет на экран числа 4, 5, 7.
Таким образом, на экране будут числа 1, 2, 3, 4, 5, 7, 6, 5, 4, 5, 7. Их сумма равна 49.
Ответ: 49.
17 слайд
Паскаль
program vopr_11;
uses crt;
var k:integer;
procedure Rec(n:integer);
begin
k:=k+n;
write(n,' ');
if n < 5 then begin
Rec(n + 1);
Rec(n + 3);
end
end;
//тело программы
begin
Rec(1);
writeln('Ответ:':15,k);
end.
18 слайд
7
5
1
4
2
6
4
7
5
3
5
1+2+3+4+5+7+6+5+4+5+7 =
10 +
18 +
21
49
19 слайд
Самостоятельно
Ниже на пяти языках программирования записан
рекурсивный алгоритм F.
Чему равна сумма всех чисел, напечатанных на экране при выполнении вызова F(6)?
20 слайд
Пояснение
На первом шаге процедура F(6) выведет число 6 и вызовет процедуры F(5) и F(3).
На втором шаге процедуры F(5) и F(3) выведут числа 5 и 3 и вызовут процедуры F(4), F(2), F(2) и F(0).
На третьем шаге будут выведены числа 4, 2, 2 и 0; вызваны процедуры F(3), F(1), F(1), F(−1), F(1), F(−1).
На четвёртом шаге будут выведены числа 3, 1, 1, −1, 1, −1; вызваны процедуры F(2) и F(0).
На пятом шаге будут выведены числа 2, 0 и вызваны процедуры F(1), F(−1).
На шестом шаге будут выведены числа 1 и −1.
Найдём сумму выведенных чисел:
6 + 5 + 3 + 4 + 2 + 2+ 0 + 3 + 1 + 1 + (−1) + 1 + (−1) + 2 + 0 + 1 + (−1) = 28.
Ответ: 28.
21 слайд
решение
program vopr_11;
uses crt;
var k:integer;
procedure F(n: integer);
begin
writeln(n);
k:=k+n;
if n > 1 then
begin
F(n - 1);
F(n - 3);
end
end;
//тело программы
begin
F(6);
writeln('Ответ:':14,k);
end.
22 слайд
0
2
-1
1
6
3
5
1
3
0
2
-1
1
4
2
-1
1
6+5+4+3+2+1+(-1)+0+1+2+1+(-1)+3+2+1+(-1)+0 =
10
11 +
+ 7
28
23 слайд
Алгоритмы, опирающиеся на несколько предыдущих значений
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
F(1) = 1
F(2) = 3
F(n) = F(n–1) * n + F(n–2) * (n – 1) , при n >2
Чему равно значение функции F(5)?
В ответе запишите только натуральное число.
24 слайд
Решение
Выпишем уже известные нам F(1) и F(2)
F(1)=1
F(2)=3
F(3)=11
F(4)=53
F(5)=309
Последовательно находим:
F(3) = F(2) * 3 + F(1) * 2 = 11,
F(4) = F(3) * 4 + F(2) * 3 = 53,
F(5) = F(4) * 5 + F(3) * 4 = 309.
Ответ: 309
25 слайд
Самостоятельно
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
F(1) = 1
F(2) = 3
F(n) = F(n−1) * F(n−2) + (n−2), при n > 2
Чему равно значение функции F(5)?
В ответе запишите только натуральное число.
26 слайд
Решение
F(1) = 1
F(2) = 3
F(3) = 4
F(4) = 14
F(5) = 59
Последовательно находим:
F(3) = F(2) * F(1) + 1 = 4,
F(4) = F(3) * F(2) + 2 = 14,
F(5) = F(4) * F(3) + 3 = 59.
Ответ: 59
27 слайд
Алгоритмы, опирающиеся на одно предыдущее значение
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
F(1) = 1
F(n) = F(n–1) * n, при n >1
Чему равно значение функции F(5)? В ответе запишите только натуральное число.
28 слайд
Решение
Последовательно находим:
F(2) = F(1) * 2 = 2,
F(3) = F(2) * 3 = 6,
F(4) = F(3) * 4 = 24,
F(5) = F(4) * 5 = 120.
Примечание
Использование функции позволяет вычислить так называемый факториал числа n — произведение натуральных чисел от 1 до n. Тем самым, F(5) = 1 * 2 * 3 * 4 * 5 = 120.
Ответ: 120
29 слайд
Самостоятельно
Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:F(1) = 3
F(n) = F(n–1) * (n–1), при n >1
Чему равно значение функции F(6)?
В ответе запишите только натуральное число.
30 слайд
Решение
Последовательно находим:
F(2) = F(1) * 1 = 3,
F(3) = F(2) * 2 = 6,
F(4) = F(3) * 3 = 18,
F(5) = F(4) * 4 = 72,
F(6) = F(5) * 5 = 360.
Ответ: 360
31 слайд
Спасибо за внимание!
Рабочие листы
к вашим урокам
Скачать
Что такое процедуры и функции и их описание.
Параметры процедур и функций.
Определение рекурсии и рекурсивного объекта.
Что такое рекурсивный подъем и его использование.
Что такое рекурсивный спуск и его использование.
Подробное решение задач на рекурсии.
Разбор ЕГЭ задач на рекурсии с примерами кода на PASCAL
6 672 058 материалов в базе
Настоящий материал опубликован пользователем Замотаев Сергей Владимирович. Инфоурок является информационным посредником и предоставляет пользователям возможность размещать на сайте методические материалы. Всю ответственность за опубликованные материалы, содержащиеся в них сведения, а также за соблюдение авторских прав несут пользователи, загрузившие материал на сайт
Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.
Удалить материалВаша скидка на курсы
40%Курс профессиональной переподготовки
500/1000 ч.
Курс профессиональной переподготовки
300/600 ч.
Курс повышения квалификации
72 ч. — 180 ч.
Курс повышения квалификации
72 ч. — 180 ч.
Мини-курс
8 ч.
Мини-курс
3 ч.
Мини-курс
4 ч.
Оставьте свой комментарий
Авторизуйтесь, чтобы задавать вопросы.