СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Рекурсия (типы задач)

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Рекурсия (типы задач)»

Рекурсия – это приём, позволяющий свести исходную задачу к одной или нескольким более простым задачам того же типа

Чтобы определить рекурсию, нужно задать

    • условие остановки рекурсии (базовый случай или несколько базовых случаев)

    • рекуррентную формулу

Любую рекурсивную процедуру можно запрограммировать с помощью цикла (рекурсия позволяет заменить цикл и в некоторых сложных задачах делает решение более понятным, хотя часто менее эффективным)

Дан рекурсивный алгоритм:

procedure F(n: integer);

begin

writeln(n);

if n

F(n+2);

F(n*3);

end;

end;

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



Дан рекурсивный алгоритм:

procedure F(n: integer);

begin

writeln('*');

if n 0 then begin

F(n-2);

F(n div 2);

end;

end;

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


Процедура F(n), где n – натуральное число, задана следующим образом (язык Паскаль):

procedure F(n: integer);

begin

if n

write('*')

else begin

F(n-1);

F(n-2);

F(n-2);

end;

end;

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






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

  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)?

  1. Дан рекурсивный алгоритм:

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)?


  1. Дан рекурсивный алгоритм:

procedure F(n: integer);

begin

writeln('*');

if n 0 then begin

F(n-3);

F(n div 2);

end

end;

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


  1. Дан рекурсивный алгоритм:

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)?


  1. Дан рекурсивный алгоритм:

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)?

  1. Дан рекурсивный алгоритм:

procedure F(n: integer);

begin

writeln('*');

if n 0 then begin

writeln('*');

F(n-2);

F(n div 2);

end

end;

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


  1. Дан рекурсивный алгоритм:

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)?

  1. Дан рекурсивный алгоритм:

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)?

  1. Дан рекурсивный алгоритм:

procedure F(n: integer);

begin

if n 0 then begin

F(n-2);

F(n-1);

F(n-1);

end;

writeln('*');

end;

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

  1. Дан рекурсивный алгоритм:

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)?

  1. Дан рекурсивный алгоритм:

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)?

  1. Дан рекурсивный алгоритм:

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)?