Демовариант ЕГЭ по информатике 2021 года, задание 16

Демовариант ЕГЭ по информатике 2021 года, задание 16

Задача

Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями:
F(n) = 1 при n = 1;
F(n) = n + F(n − 1), если n – чётно,
F(n) = 2 × F(n − 2), если n > 1 и при этом n – нечётно.
Чему равно значение функции F(26)?

Решение (Рекурентная формула)

Обратите внимание на то, что значение F(n) задано рекурсивной функцией.

Рекурсивная функция - это числовая функция f(n) числового аргумента, которая в своей записи содержит себя же.

 Т.к. 26 - четное, то:

25 - не четное:

23 - не четное:

Замечам, что в дальнейшем все n будет не четными.

Задача сводится к тому, чтобы выяснить сколько таких нечетных значений n будет.

Чисел - 12 (25 - 23 - 21 - 19 - 17 - 15 - 13 - 11 - 9 - 7 - 5 - 3). При n=1 значение функции нам известно F(n) = 1.

12 раз 2 умножается сама на себя - это степень числа 2.

Ответ: 4122.

Решение (Программа, Паскаль)

Рекурсия в Паскале записывается через подпрограмму.

Подпрограмма - поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы.

В Паскале подпрограмма — и функция и процедура.

Между функциями и процедурами есть существенное отличие. Значение, полученное в результате выполнения кода функции, жестко соотносится с ее именем путем присвоения этому имени конкретного значения. Тип, который может принять вычисляемое значение, указывается в заголовке функции (тип результата). И в теле основной программы функция вызывается только в том случае, если ее имя фигурирует в каком-либо выражении. В то время как процедура вызывается отдельно.

Функция описывается в разделе описания переменных и имеет следующий синтаксис:

Program Name;
  var;{область объявления глобальных переменных}
  function название (параметры); {начало процедуры}
      begin{тело процедуры}
      end;{конец процедуры}
begin{основная программа}
end.

В нашем в функции будет использоваться одна целочисленная переменная - n. А сама функция будет иметь имя func. Тело функции будет состоятть из условного оператора, который по n будет определять как считать func.

Таким образом алгоритм будет иметь следующий вид:

Program N_16;
  var a:integer;
  function func (x:integer):integer;
    begin
        if n=1 then
          func:=1
        else
          if n mod 2 = 0 then
            func:=n + func(n-1)
          else
            func:=2*func(n-2);
      end;
begin
  writeln('Введите число');
  read(a);
  write('F(',a,')=',func(a))
end.

Решение (Программа, Питон)

Рекурсия в Питоне записывается через подпрограмму.

В нашем в функции будет использоваться одна целочисленная переменная - n. А сама функция будет иметь имя func. Тело функции будет состоятть из условного оператора, который по n будет определять как считать func.

Таким образом алгоритм будет иметь следующий вид:

def func (n):
    if n==1:
    	return 1
    elif n%2 == 0:
    	return n + func(n-1)
    else:
    	return 2*func(n-2)
a=int(input())
print('F(',a,')=',func(a))

Демонстрационный вариант 2021 года

Выберите соответствующий номер задания в демонстрационном варианте ЕГЭ 2021 года

Информация

Все изображения, размещенные на сайте, изготовлены автором самостоятельно, а также взяты в сети Интернет из тех изображений, которые находятся в свободном доступе. Поиск изображений осуществлялся посредством "Яндекс. Картинки".

Индекс цитирования

Проект при поддержке компании RU-CENTER Рейтинг@Mail.ru

Версия сайта для слабовидящих