Задание №16 — Рекурсия
#69536Задание №16ФИПИ
Рекурсия
Алгоритм вычисления значения функции F(n), где n — целое неотрицательное число, задан следующими соотношениями:
F(n) = 1, если n <= 1;
F(n) = если n > 1 и при этом n нечётно;
F(n) = если n > 1 и при этом n чётно.
Чему равно значение функции F(12)?
Правильный ответ
30830260
Пояснение
Решение:
Значения считаем по порядку, начиная с . Для чётных значение просто удваивается, для нечётных используем (удобно свернуть его как ).
; ; ; ; ; ; ; ; ; ; .
| n | F(n) |
|---|---|
| 0 | 1 |
| 1 | 1 |
| 2 | 2 |
| 3 | 2 |
| 4 | 4 |
| 5 | 5 |
| 6 | 10 |
| 7 | 38 |
| 8 | 76 |
| 9 | 2777 |
| 10 | 5554 |
| 11 | 15415130 |
| 12 | 30830260 |
from functools import lru_cache
@lru_cache(None)
def F(n):
if n <= 1:
return 1
if n % 2 == 1:
return 3 + F(n - 1) * F(n - 2) - F(n - 1) - F(n - 2)
return 2 * F(n - 1)
print(F(12)) # 30830260Ответ: 30830260