Алгоритм вычисления значения функции 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)?
Решение с применением рекурсии
Рекурсивной называется процедура, вызывающая сама себя.
Для решения этой задачи нам необходимо написать программу, которая будет содержать условия. При выполнении этих условий, будут выполняться команды. В задаче эти условия и команды которые нужно выполнять нам даны. Нужно все это просто написать на языке программирования. Мы будем писать на Питоне.
Пройдемся по строкам нашей программы:
- 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.
Если хотите более подробный разбор этого способа или есть вопросы, то пишите! И не забывайте подписываться на мой канал и готовится к ЕГЭ по информатике вместе со мной.