Разделы презентаций


Рекурсивные алгоритмы

Содержание

Содержание:Определение рекурсииПримеры решения задачПример 1Пример 2Пример 3Пример 4Задания для тренировки

Слайды и текст этой презентации

Слайд 1Задание № 11 ЕГЭ
(базовый уровень, время – 5 мин)

Рекурсивные

алгоритмы
Автор – Коротун О.В.,
учитель информатики МОУ «СОШ №

71»
Задание № 11 ЕГЭ (базовый уровень, время – 5 мин)Рекурсивные алгоритмы  Автор – Коротун О.В., учитель

Слайд 2Содержание:
Определение рекурсии
Примеры решения задач
Пример 1
Пример 2
Пример 3
Пример 4
Задания для тренировки

Содержание:Определение рекурсииПримеры решения задачПример 1Пример 2Пример 3Пример 4Задания для тренировки

Слайд 3Что нужно знать:
Реку́рсия — в определении, описании, изображении какого-либо объекта или

процесса внутри самого этого объекта или процесса, то есть ситуация,

когда объект является частью самого себя.

Герб Российской Федерации является рекурсивно-определённым графическим объектом: в правой лапе изображённого на нём двуглавого орла зажат скипетр, который венчается уменьшенной копией герба. Так как на этом гербе в правой лапе орла также находится скипетр, получается бесконечная рекурсия.
 

Рекурсивный герб России

Что нужно знать:Реку́рсия — в определении, описании, изображении какого-либо объекта или процесса внутри самого этого объекта или процесса,

Слайд 5В программировании рекурсия — вызов функции из неё же самой,

непосредственно или через другие функции, например, функция A вызывает функцию

B, а функция B — функцию A. Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.

пример рекурсии: Если у вас жирное пятно на платье,не переживайте. Пятна от масла убираются бензином.Пятно от бензина раствором щёлочи.Щелочь убирается эссенцией.След от эссенции потрите маслом.Hу,а как убрать пятна от масла,вы уже знаете!

В программировании рекурсия — вызов функции из неё же самой, непосредственно или через другие функции, например, функция

Слайд 6Пример задания:
Дан рекурсивный алгоритм:

procedure F(n: integer);
begin
writeln(n);
if n

5 then begin
F(n + 1);
F(n +

3)
end
end;

Найдите сумму чисел, которые будут выведены при вызове F(1).

Решение с помощью дерева вызовов:
в начале каждого вызова на экран выводится значение единственного параметра функции

Пример задания: Дан рекурсивный алгоритм:procedure F(n: integer);begin writeln(n); if n < 5 then begin  F(n +

Слайд 7Пример задания:
Дан рекурсивный алгоритм:

procedure F(n: integer);
begin
writeln(n);
if n

5 then begin
F(n + 1);
F(n +

3)
end
end;

Найдите сумму чисел, которые будут выведены при вызове F(1).

Пример задания: Дан рекурсивный алгоритм:procedure F(n: integer);begin writeln(n); if n < 5 then begin  F(n +

Слайд 8Пример задания:
Дан рекурсивный алгоритм:

procedure F(n: integer);
begin
writeln(n);
if n

5 then begin
F(n + 1);
F(n +

3)
end
end;

Найдите сумму чисел, которые будут выведены при вызове F(1).

при n<5 выполняется два рекурсивных вызова, и на экране появляются следующие значения параметра:

+1

+3

Пример задания: Дан рекурсивный алгоритм:procedure F(n: integer);begin writeln(n); if n < 5 then begin  F(n +

Слайд 9Пример задания:
Дан рекурсивный алгоритм:

procedure F(n: integer);
begin
writeln(n);
if n

5 then begin
F(n + 1);
F(n +

3)
end
end;

Найдите сумму чисел, которые будут выведены при вызове F(1).

Продолжаем до тех пор, пока условие n<5 не станет ложным для узловых параметров. Получаем следующие значения:

Пример задания: Дан рекурсивный алгоритм:procedure F(n: integer);begin writeln(n); if n < 5 then begin  F(n +

Слайд 10Пример задания:
Дан рекурсивный алгоритм:

procedure F(n: integer);
begin
writeln(n);
if n

5 then begin
F(n + 1);
F(n +

3)
end
end;

Найдите сумму чисел, которые будут выведены при вызове F(1).

Продолжаем до тех пор, пока условие n<5 не станет ложным для узловых параметров. Получаем следующие значения:

Складывая все эти числа, получаем 49

Пример задания: Дан рекурсивный алгоритм:procedure F(n: integer);begin writeln(n); if n < 5 then begin  F(n +

Слайд 1115
Пример № 2:
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln(n);
if n

< 6 then begin
F(n+2);
F(n*3)
end
end;

Найдите сумму

чисел, которые будут выведены при вызове F(1).

Складывая все эти числа, получаем 79

7

+2

*3

Аналогичная задача, которую можно решать с помощью дерева:

15Пример № 2:Дан рекурсивный алгоритм:procedure F(n: integer);begin writeln(n); if n < 6 then begin  F(n+2);

Слайд 12Пример № 2:
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln(n);
if n

< 6 then begin
F(n+2);
F(n*3)
end
end;

Найдите сумму

чисел, которые будут выведены при вызове F(1).
Пример № 2:Дан рекурсивный алгоритм:procedure F(n: integer);begin writeln(n); if n < 6 then begin  F(n+2);

Слайд 13Пример № 3:
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n

> 0 then begin
F(n-2);
F(n div 2)

end
end;

Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?

В этом примере на экран выводятся не значения параметра n, а символ *

-2

div 2

1

0

-1

0

-1

0

-1

-1

-1

0

0

0

Пример № 3:Дан рекурсивный алгоритм:procedure F(n: integer);begin writeln('*'); if n > 0 then begin  F(n-2);

Слайд 14Пример № 3:
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n

> 0 then begin
F(n-2);
F(n div 2)

end
end;

Сколько символов "звездочка" будет напечатано на экране
при выполнении вызова F(7)?

Подсчитав количество «звездочек», получаем 21

В этом примере на экран выводятся не значения параметра n, а символ *

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

*

Пример № 3:Дан рекурсивный алгоритм:procedure F(n: integer);begin writeln('*'); if n > 0 then begin  F(n-2);

Слайд 15Пример № 3:
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n

> 0 then begin
F(n-2);
F(n div 2)

end
end;

Сколько символов "звездочка" будет напечатано на экране
при выполнении вызова F(7)?

S (n)=


Слайд 16Пример № 4:
procedure F(n: integer);
begin
if n < 3 then

write('*')
else begin
F(n-1);
F(n-2);
F(n-2)

end;
end;

Сколько звездочек напечатает эта процедура при вызове F(6)? В ответе запишите только целое число.

эта задача по сути такая же, как и предыдущая: для n < 3 функция выводит одну звездочку, а для бóльших n продолжаем рисовать дерево

-1

-2

4

-2

3

2

Пример № 4:procedure F(n: integer);begin if n < 3 then  write('*') else begin  F(n-1);

Слайд 17Пример № 4:
procedure F(n: integer);
begin
if n < 3 then

write('*')
else begin
F(n-1);
F(n-2);
F(n-2)

end;
end;

Сколько звездочек напечатает эта процедура при вызове F(6)? В ответе запишите только целое число.

-1

-2

4

-2

3

*

Вторая и третья ветви абсолютно одинаковые, поэтому будем рисовать одну, а количество «звездочек» потом умножим на 2.

При условии n<3 на экране появляются «звездочки».

Пример № 4:procedure F(n: integer);begin if n < 3 then  write('*') else begin  F(n-1);

Слайд 18Пример № 4:
procedure F(n: integer);
begin
if n < 3 then

write('*')
else begin
F(n-1);
F(n-2);
F(n-2)

end;
end;

Сколько звездочек напечатает эта процедура при вызове F(6)? В ответе запишите только целое число.

-1

-2

4

-2

3

**

3

**

***

***

***

***

Получаем по первой ветви 11 «звездочек», по третьей, а значит и по второй – по 5.
Всего – 21

При условии n<3 на экране появляются «звездочки».

Пример № 4:procedure F(n: integer);begin if n < 3 then  write('*') else begin  F(n-1);

Слайд 19Пример № 4:
procedure F(n: integer);
begin
if n < 3 then

write('*')
else begin
F(n-1);
F(n-2);
F(n-2)

end;
end;

Сколько звездочек напечатает эта процедура при вызове F(6)? В ответе запишите только целое число.

S (n)=

S (n)=

Пример № 4:procedure F(n: integer);begin if n < 3 then  write('*') else begin  F(n-1);

Слайд 20Пример № 4:
procedure F(n: integer);
begin
if n < 3 then

write('*')
else begin
F(n-1);
F(n-2);
F(n-2)

end;
end;

Сколько звездочек напечатает эта процедура при вызове F(6)? В ответе запишите только целое число.

S (n)=

Нам нужно узнать S(6).
S(6)=S(5)+2*S(4)
S(5)=S(4)+2*S(3)
S(4)=S(3)+2*S(2)
S(3)=S(2)+2*S(0)=S(2)+2*1=S(2)+2
S(2)=1

Делаем обратный ход:
S(3)=1+2=3
S(4)=3+2*1=5
S(5)=5+2*3=11
S(6)=11+2*5=21

Пример № 4:procedure F(n: integer);begin if n < 3 then  write('*') else begin  F(n-1);

Слайд 21Задания для тренировки

Задания для тренировки

Слайд 22Задача 1:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln('*'); if n >

0 then begin F(n-2); F(n div 2);

F(n div 2); end end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(5)?

Ответ: 34

Задача 1:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln('*');  if n > 0 then

Слайд 23Задача 2:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln('*'); if n >

0 then begin F(n-2); F(n-2); F(n div

2); end end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(6)?

Ответ: 58

Задача 2:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln('*');  if n > 0 then

Слайд 24Задача 3:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln('*'); if n >

0 then begin F(n-3); F(n div 2); end end;

Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?

Ответ: 15

Задача 3:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln('*');  if n > 0 then

Слайд 25Задача 4:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln('*'); if n >

0 then begin F(n-3); F(n-2); F(n div

2); end end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?

Ответ: 55

Задача 4:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln('*');  if n > 0 then

Слайд 26Задача 5:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln('*'); if n >

0 then begin F(n-3); F(n-2); F(n div

2); F(n div 2); end end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(6)?

Ответ: 97

Задача 5:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln('*');  if n > 0 then

Слайд 27Задача 6:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln('*'); if n > 0

then begin writeln('*'); F(n-2); F(n div 2);

end end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?

Ответ: 31

Задача 6:Дан рекурсивный алгоритм:  procedure F(n: integer); begin writeln('*');  if n > 0 then begin

Слайд 28Задача 7:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln('*'); if n > 0

then begin writeln('*'); F(n-2); F(n div 2);

F(n div 2); end end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?

Ответ: 81

Задача 7:Дан рекурсивный алгоритм:  procedure F(n: integer); begin writeln('*');  if n > 0 then begin

Слайд 29Задача 8:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln('*'); if n > 0

then begin writeln('*'); F(n-2); F(n-2); F(n

div 2); end end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(6)?

Ответ: 77

Задача 8:Дан рекурсивный алгоритм:  procedure F(n: integer); begin writeln('*');  if n > 0 then begin

Слайд 30Задача 9:

Дан рекурсивный алгоритм: procedure F(n: integer); begin if n > 0

then begin F(n-2); F(n-1); F(n-1); end; writeln('*'); end;

Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(5)?

Ответ: 148

Задача 9:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  if n > 0 then begin

Слайд 31Задача 10:

Дан рекурсивный алгоритм: procedure F(n: integer); begin if n > 0

then begin writeln('*'); F(n-2); F(n-1); F(n-1);

end; writeln('*'); end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(5)?

Ответ: 197

Задача 10:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  if n > 0 then begin

Слайд 32Задача 11:

Дан рекурсивный алгоритм: procedure F(n: integer); begin if n > 1

then begin F(n-2); F(n-1); F(n div 2);

end; writeln('*'); end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?

Ответ: 88

Задача 11:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  if n > 1 then begin

Слайд 33Задача 12:

Дан рекурсивный алгоритм: procedure F(n: integer); begin if n > 2

then begin writeln('*'); F(n-2); F(n-1); F(n

div 2); end; writeln('*'); end; Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(6)?

Ответ: 33

Задача 12:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  if n > 2 then begin

Слайд 34Задача 13:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

6 then begin F(n+2); F(n*3) end end; Найдите сумму чисел,

которые будут выведены при вызове F(2).

Ответ: 30

Задача 13:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 6 then

Слайд 35Задача 14:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

5 then begin F(n+2); F(n*2) end end; Найдите сумму чисел,

которые будут выведены при вызове F(1).

Ответ: 53

Задача 14:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 5 then

Слайд 36Задача 15:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

5 then begin F(n+3); F(n*3) end end; Найдите сумму чисел,

которые будут выведены при вызове F(1).

Ответ: 42

Задача 15:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 5 then

Слайд 37Задача 16:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

7 then begin F(n+3); F(n*2) end end; Найдите сумму чисел,

которые будут выведены при вызове F(2).

Ответ: 44

Задача 16:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 7 then

Слайд 38Задача 17:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

7 then begin F(n+2); F(n+3) end end; Найдите сумму чисел,

которые будут выведены при вызове F(1).

Ответ: 81

Задача 17:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 7 then

Слайд 39Задача 18:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

5 then begin F(n+2); F(n+3); F(n*2) end end; Найдите

сумму чисел, которые будут выведены при вызове F(1).

Ответ: 103

Задача 18:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 5 then

Слайд 40Задача 19:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

5 then begin F(n+1); F(n+2); F(n*3) end end; Найдите

сумму чисел, которые будут выведены при вызове F(2).

Ответ: 79

Задача 19:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 5 then

Слайд 41Задача 20:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

6 then begin writeln(n); F(n+2); F(n*3) end end; Найдите

сумму чисел, которые будут выведены при вызове F(2).

Ответ: 36

Задача 20:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 6 then

Слайд 42Задача 21:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

5 then begin writeln(n); F(n+3); F(n*3) end end; Найдите

сумму чисел, которые будут выведены при вызове F(1).

Ответ: 50

Задача 21:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 5 then

Слайд 43Задача 22:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

7 then begin writeln(n); F(n+1); F(n+2);

F(n*3) end end; Найдите сумму чисел, которые будут выведены при вызове F(2).

Ответ: 425

Задача 22:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 7 then

Слайд 44Задача 23:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

6 then begin writeln(n); F(n+1); F(n+2);

F(n*2) end end; Найдите сумму чисел, которые будут выведены при вызове F(1).

Ответ: 530

Задача 23:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 6 then

Слайд 45Задача 24:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

6 then begin writeln(n); F(n+1); F(n*2);

F(n*3) end end; Найдите сумму чисел, которые будут выведены при вызове F(2).

Ответ: 169

Задача 24:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 6 then

Слайд 46Задача 25:

Дан рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n

7 then begin writeln(n); F(n+2); F(n*2);

F(n*3) end end; Найдите сумму чисел, которые будут выведены при вызове F(1).    

Ответ: 426

Задача 25:Дан рекурсивный алгоритм:  procedure F(n: integer); begin  writeln(n);  if n < 7 then

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика