Найти тему

Разбор задания №16 по информатике из демоверсии 2021. Решаем двумя способами. С помощью рекурсии и циклов в Python.

Алгоритм вычисления значения функции 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)?

Решение с применением рекурсии

Рекурсивной называется процедура, вызывающая сама себя.

Для решения этой задачи нам необходимо написать программу, которая будет содержать условия. При выполнении этих условий, будут выполняться команды. В задаче эти условия и команды которые нужно выполнять нам даны. Нужно все это просто написать на языке программирования. Мы будем писать на Питоне.

-2

Пройдемся по строкам нашей программы:

  • def f(n): - объявили функцию f(n);
  • if n == 1: - задаем условие, если f(n) = 1, то выполняется следующее действие;
  • return 1 - означает что n = 1. Оператор return возвращает значение 1 функции;
  • elif n % 2 == 0: - иначе проверяется условие, если f(n) - четное, то выполняется следующее действие;
  • return n + f(n-1) - оператор return возвращает значение n + f(n-1) функции; т.е. f(n) = n + f(n − 1);
  • else: - иначе, если число нечетное, то выполняется следующее действие;
  • return 2 * f(n-2) - оператор return возвращает значение 2 * f(n-2) функции; т.е. 2 * f(n − 2)
  • print(f(26)) - вызываем функцию f(n), где n = 26. И выводим результат на экран.

Ответом к этому заданию будет число - 4122

16 задание я советую решать именно так, а следующий способ с применением циклов, я написала для вас, чтобы вы смогли понять что же такое рекурсия и какие шаги проделывает наша программа, прежде чем получить число 4122

Решение с применением цикла

Этот способ стоит изучать только для того чтобы понять каким образом работает рекурсия в нашей задаче. В общем для тех кто любопытный и хочет разобраться. А вообще достаточно научится писать программу с функцией которая вызывает сама себя.

Советую написать этот код в компилятор и посмотреть что получится!
Советую написать этот код в компилятор и посмотреть что получится!

Строки - print("Если n =", i, "a =", a), в данной программе функционала никакого не несут, они нужны просто для наглядности. Чтобы вы видели как меняются результат на каждом шаге. В range мы пишем n + 1, для того чтобы цикл прошел по числу 26.

Если хотите более подробный разбор этого способа или есть вопросы, то пишите! И не забывайте подписываться на мой канал и готовится к ЕГЭ по информатике вместе со мной.