Меню Закрыть

Procedure f n integer begin writeln

Ниже записаны две рекурсивные процедуры, F и G:

procedure F(n: integer); forward;

procedure G(n: integer); forward;

procedure F(n: integer);

procedure G(n: integer);

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

Паскаль, встретив команду F(11), вызывает процедуру F и передает ей параметр n = 11:

в случае выполнения условия n > 0 выполняется следующая строка: G(n — 1), вызывающая процедуру G после уменьшения n на 1

процедура G печатает звездочку и, в случае выполнения условия n > 1, уменьшает значение n на 3, затем с новым параметром вызывает процедуру F(7)

в случае выполнения условия n > 0 выполняется следующая строка: G(n — 1), вызывающая процедуру G после уменьшения n на 1

процедура G печатает звездочку и, в случае выполнения условия, уменьшает значение n на 3, затем с новым параметром вызывает процедуру F(3)

в случае выполнения условия n > 0 выполняется следующая строка: G(n — 1), вызывающая процедуру G после уменьшения n на 1

процедура G печатает звездочку и, в случае выполнения условия, уменьшает значение n на 3, затем с новым параметром вызывает процедуру F(-1)

получив значение -1 и убедившись, что условие не выполнилось, Паскаль завершает выполнение программы.

А нам остается подсчитать, сколько раз печаталась звездочка. В нашем случае это произошло ровно 3 раз(а)

Итого, правильный ответ: 3

Внимание! Для прокрутки условия на анимации необходимо по нему произвести щелчок левой кнопкой мыши и нажать кнопку "ВНИЗ" или "ВВЕРХ"

Интерактивный тренажер 11 ЕГЭ ДЕМО 2015
на "Рекурсивные алгоритмы"

Если уловие задания видно не полностью, щелкните по нему курсором мыши и нажмите клавишу «вниз» или «вверх»

Примеры заданий и их решений, генерируемых интерактивным тренажером по задачам11 ЕГЭ 2015
Рекурсивные алгоритмы.

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

procedure F(n: integer);
begin
writeln(n);
if n = 5 процедура выводит число n и заканчивает работу без рекурсивных вызовов:
S(n) = n при n >= 5
при n = 5
S(n) = n + S(n+1) + S(n+3)

Прокручиваем цикл сшагом -1 начиная от значения меньшего 5

S(4) = 4 + S(5) + S(7) = 4 + 5 + 7 = 16
S(3) = 3 + S(4)+S(6) = 3 + 16 + 6 = 25
S(2) = 2 + S(3) +S(5) = 2 + 25 + 5 = 32
S(1) = 1 + S(2) + S(4) = 1 + 32 + 16 = 49
таким образом правильный ответ = 49

Воспользуемся данным методом и попробуем решить следующую задачу, не тратя время на комментарии

Задача 2

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

Записываем прокрутку в общем виде

S(5) = 5 + S(7) + S(15)
S(4) = 4 + S(6) + S(12)
S(3) = 3 + S(5) + S(9)
S(2) = 2 + S(4) + S(6)
S(1) = 1 + S(3) + S(3)

из последнего уравнения видим, что нам нужны третье и пятое уравнение, поэтому окончательно получаем:

Читайте также:  При входящем вызове не включается экран

S(5) = 5 + S(7) + S(15) = 5+7+15 = 27
S(3) = 3 + S(5) + S(9) = 3 + 27 + 9 = 39
S(1) = 1 + S(3) + S(3) = 1 + 39 + 39 = 79

Задание №3 Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:

РЕШЕНИЕ:

F(0) = 1, F(1) = 1
1) используя заданную рекуррентную формулу, находим, что F(2) = F(2 — 1) * F(2 — 2) = 1
2) используя заданную рекуррентную формулу, находим, что F(3) = F(3 — 1) * F(3 — 2) = 1
3) используя заданную рекуррентную формулу, находим, что F(4) = F(4 — 1) * F(4 — 2) = 1
4) используя заданную рекуррентную формулу, находим, что F(5) = F(5 — 1) * F(5 — 2) = 1
5) используя заданную рекуррентную формулу, находим, что F(6) = F(6 — 1) * F(6 — 2) = 1
6) используя заданную рекуррентную формулу, находим, что F(7) = F(7 — 1) * F(7 — 2) = 1
7) используя заданную рекуррентную формулу, находим, что F(8) = F(8 — 1) * F(8 — 2) = 1
8) используя заданную рекуррентную формулу, находим, что F(9) = F(9 — 1) * F(9 — 2) = 1
9) используя заданную рекуррентную формулу, находим, что F(10) = F(10 — 1) * F(10 — 2) = 1
10) используя заданную рекуррентную формулу, находим, что F(11) = F(11 — 1) * F(11 — 2) = 1
11) используя заданную рекуррентную формулу, находим, что F(12) = F(12 — 1) * F(12 — 2) = 1
12) используя заданную рекуррентную формулу, находим, что F(13) = F(13 — 1) * F(13 — 2) = 1
13) используя заданную рекуррентную формулу, находим, что F(14) = F(14 — 1) * F(14 — 2) = 1

Ответ: 1

Задание №4. Дан рекурсивный алгоритм:

Чему равно значение функции F(5)? В ответе запишите только натуральное число.

РЕШЕНИЕ:

1) используя заданную рекуррентную формулу, находим, что F(2) = F(2 — 1) * F(2 — 2) + 5 = 6
2) используя заданную рекуррентную формулу, находим, что F(3) = F(3 — 1) * F(3 — 2) + 5 = 11
3) используя заданную рекуррентную формулу, находим, что F(4) = F(4 — 1) * F(4 — 2) + 5 = 71
4) используя заданную рекуррентную формулу, находим, что F(5) = F(5 — 1) * F(5 — 2) + 5 = 786

Ответ: 786

Задание №6. Дан рекурсивный алгоритм:

procedure F(n: integer);begin writeln(n);
if n = 6 процедура выводит число n и заканчивает работу без рекурсивных вызовов:
S(n) = n при n >= 6
при n 0 then begin
writeln(‘*’);
F(n-5);
F(n div 2);
F(n div 2);
end
end;

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

РЕШЕНИЕ:

S(0) = 1
S(1) = 2 + S(1-2) + 2*S(1 div 2) = 2 + 1 + 2 = 5
S(2) = 2 + S(2-2) + 2*S(2 div 2) = 2 + 1 + 10 = 13
S(3) = 2 + S(3-2) + 2*S(3 div 2) = 2 + 1 + 10 = 13
S(4) = 2 + S(4-2) + 2*S(4 div 2) = 2 + 1 + 26 = 29
S(5) = 2 + S(5-2) + 2*S(5 div 2) = 2 + 1 + 26 = 29
S(6) = 2 + S(6-2) + 2*S(6 div 2) = 2 + 5 + 26 = 33
S(7) = 2 + S(7-2) + 2*S(7 div 2) = 2 + 13 + 26 = 41
S(8) = 2 + S(8-2) + 2*S(8 div 2) = 2 + 13 + 58 = 73

Читайте также:  Русский язык расстановка знаков препинания

Таким образом правильный ответ = 73

Задание №8. Дан рекурсивный алгоритм:

procedure F(n: integer);
begin writeln(‘*’);
if n > 0 then begin
writeln(‘*’);
F(n-8);
F(n div 2);
end
end;

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

РЕШЕНИЕ:

S(0) = 1
S(1) = 2 + S(1-2)+S(1 div 2) = 2 + 1 + 1 = 4
S(2) = 2 + S(2-2)+S(2 div 2) = 2 + 1 + 4 = 7
S(3) = 2 + S(3-2)+S(3 div 2) = 2 + 1 + 4 = 7
S(4) = 2 + S(4-2)+S(4 div 2) = 2 + 1 + 7 = 10
S(5) = 2 + S(5-2)+S(5 div 2) = 2 + 1 + 7 = 10
S(6) = 2 + S(6-2)+S(6 div 2) = 2 + 1 + 7 = 10

Таким образом правильный ответ = 10

Задание №9. Алгоритм вычисления значения функции F(n), где n – натуральн ое число, задан следующими соотношениями:

F(0) = 1,
F(1) = 1
F(n) = F(n–1) * F(n — 2) + 5, при n > 1

Чему равно значение функции F(7)? В ответе запишите только натуральное число.

РЕШЕНИЕ:

F(0) = 1,
F(1) = 1
F(2) = F(2 — 1) * F(2 — 2) + 5 = 6
F(3) = F(3 — 1) * F(3 — 2) + 5 = 11
F(4) = F(4 — 1) * F(4 — 2) + 5 = 71
F(5) = F(5 — 1) * F(5 — 2) + 5 = 786
F(6) = F(6 — 1) * F(6 — 2) + 5 = 55811
F(7) = F(7 — 1) * F(7 — 2) + 5 = 43867451

Ответ: 43867451

Задание №10. Алгоритм вычисления значений функций F(n) и G(n), где n – натуральное число, задан следующими соотношениями:

procedure F(n: integer);
F(1) = 1;
G(1) = 1;
F(n) = 8*F(n–1) – 8*G(n–1);
G(n) = F(n–1) + 3*G(n–1), при n >=2

Чему равно значение величины F(5) — G(5)? В ответе запишите только целое число.

РЕШЕНИЕ:

F(1) = 1 : G(1) = 1
F(2) = 8*F(1) — 8*G(1) = 0 : G(2) = F(1) + 3*G(1) = 4
F(3) = 8*F(2) — 8*G(2) = -32 : G(3) = F(2) + 3*G(2) = 12
F(4) = 8*F(3) — 8*G(3) = -352 : G(4) = F(3) + 3*G(3) = 4
F(5) = 8*F(4) — 8*G(4) = -2848 : G(5) = F(4) + 3*G(4) = -340
F[5] — G[5] = -2508

Таким образом правильный ответ = -2508

© Северобайкальск, Russia
Александр Козлов, 2017

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Ниже на пяти языках программирования записан рекурсивный алгоритм F.
Паскаль:

procedure F(n: integer); begin if n > 0 then begin write(n); F(n — 3); F(n div 3) end end;

Запишите подряд без пробелов и разделителей все числа, которые будут напечатаны на экране при выполнении вызова F(9). Числа должны быть записаны в том же порядке, в котором они выводятся на экран.

    Рассмотрим алгоритм:
Читайте также:  Редактор пдф в джипег
  • В данном фрагменте программы рекурсивная процедура вызывает саму себя дважды.
  • Благодаря условию, находящемуся в процедуре (if n > 0 — условие остановки рекурсии), обеспечивается выход из рекурсии и не происходит «зацикливания».
  • Выполнение процедур закончится, когда в каждой из вызванных процедур выполнятся по две внутренние процедуры, и условие if n > 0 перестанет работать (т.е. когда параметр процедуры n станет 9631231
  • Результат: 9631231

    Ниже на языке программирования записаны две рекурсивные функции (процедуры): F и G.

    procedure F(n:integer); forward; procedure G(n:integer); forward; procedure F (n:integer); begin writeln(‘*’); if n mod 5 = 0 then G(n — 5) else F (n — 3); end; procedure G(n:integer); begin if n > 0 then F (n — 1); end;

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

      Разберем алгоритм кода процедуры:
  • Независимо от условия (до него), процедура F выводит на экран «звездочку». Таким образом, количество «звездочек» определяется количеством вызванных процедур F.
  • Рассмотрим цепочку вызываемых процедур:
  • Количество вызовов процедуры F = 9
  • Результат: 9

    Ниже на языке программирования записан рекурсивный алгоритм F:

    procedure F(n: integer); begin if n > 0 then begin F(n div 4); write(n); F(n — 1); end end;

    В качестве ответа укажите последовательность цифр, которая будет напечатана на экране в результате вызова F(5).

    Ниже на пяти языках программирования записан рекурсивный алгоритм F.

    Бейсик Python

    Чему равна сумма всех чисел, напечатанных на экране при выполнении вызова F(1)?

    Первым действием процедура 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), которая выведет на экран числа

    Таким образом, на экране будут числа 1, 2, 3, 4, 5, 7, 6, 5, 4, 5, 7. Их сумма равна 49.

    Рекомендуем к прочтению

    Добавить комментарий

    Ваш адрес email не будет опубликован.