Просмотр содержимого документа
«Рекурсия (типы задач)»
Рекурсия – это приём, позволяющий свести исходную задачу к одной или нескольким более простым задачам того же типа
Чтобы определить рекурсию, нужно задать
Любую рекурсивную процедуру можно запрограммировать с помощью цикла (рекурсия позволяет заменить цикл и в некоторых сложных задачах делает решение более понятным, хотя часто менее эффективным)
Дан рекурсивный алгоритм:
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)? В ответе запишите только целое число.
Задачи для тренировки:
Дан рекурсивный алгоритм:
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)?
Дан рекурсивный алгоритм:
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)?
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n 0 then begin
F(n-3);
F(n div 2);
end
end;
Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?
Дан рекурсивный алгоритм:
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)?
Дан рекурсивный алгоритм:
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)?
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
writeln('*');
if n 0 then begin
writeln('*');
F(n-2);
F(n div 2);
end
end;
Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(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)?
Дан рекурсивный алгоритм:
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)?
Дан рекурсивный алгоритм:
procedure F(n: integer);
begin
if n 0 then begin
F(n-2);
F(n-1);
F(n-1);
end;
writeln('*');
end;
Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(5)?
Дан рекурсивный алгоритм:
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)?
Дан рекурсивный алгоритм:
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)?
Дан рекурсивный алгоритм:
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)?