Задание №16 — Рекурсия
#69492Задание №16ФИПИ
Рекурсия
Алгоритм вычисления значения функции F(n), где n — целое неотрицательное число, задан следующими соотношениями:
F(n) = 1 при n < 3;
F(n) = F(n − 1) + F(n − 2), если n > 2 и при этом n нечётно;
F(n) = еcли n > 2 и при этом n чётно.
Чему равно значение функции F(24)?
Правильный ответ
887040
Пояснение
Решение:
База: . Для нечётных значение считается как у чисел Фибоначчи, а для чётных нужно сложить все предыдущие значения, начиная с (нулевой член в сумму не входит).
Удобно вести таблицу и накапливать сумму :
; ; ; и так далее.
Заметим полезное упрощение: для чётного сумма всех предыдущих равна , потому что тоже чётно и само является суммой . Это позволяет считать таблицу за один проход.
| n | F(n) |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 3 | 2 |
| 4 | 4 |
| 5 | 6 |
| 6 | 14 |
| 7 | 20 |
| 8 | 48 |
| 9 | 68 |
| 10 | 164 |
| 11 | 232 |
| 12 | 560 |
| 13 | 792 |
| 14 | 1912 |
| 15 | 2704 |
| 16 | 6528 |
| 17 | 9232 |
| 18 | 22288 |
| 19 | 31520 |
| 20 | 76096 |
| 21 | 107616 |
| 22 | 259808 |
| 23 | 367424 |
| 24 | 887040 |
F = [0] * 25
F[0] = F[1] = F[2] = 1
for n in range(3, 25):
if n % 2 == 1:
F[n] = F[n - 1] + F[n - 2]
else:
F[n] = sum(F[1:n])
print(F[24]) # 887040Ответ: 887040