Информатика 10 класс
Рекурсивные алгоритмы
Заранее спасибо
Алгоритм вычисления функции F(n) задан следующими соотношениями:
F(n) = n + 3 при n < 3
F(n) = (n + 2)·F(n–4), если n делится на 3,
F(n) = n + F(n–1) + 2·F(n–2), если n не делится на 3.
Чему равно значение функции F(7)?
Answers & Comments
Ответ:
145
Объяснение:
F(7) - 7 больше 3 и не делится на 3, поэтому F(7) = 7 + F(6) + 2F(5)
Получаем, что, чтобы посчитать ответ, нужно вычислить еще и F(6) и F(5).
F(6) - 6 больше 3 и делится на 3, значит F(6) = (6 + 2) * F(2)
F(5) - 5 больше не делится на 3, значит F(5) = 5 + F(4) + 2F(3)
Получаем, придется посчитать еще и F(4), F(3), F(2):
F(4) - 4 больше 3 и не делится на 3 => F(4) = 4 + F(3) + 2F(2)
F(3) - 3 не меньше 3 и делится на 3 => F(3) = 5 * F(-1)
F(2) - 2 меньше 3, поэтому F(2) = 2 + 3 = 5
Осталось одно невычисленное значение F(-1): (-1) меньше 3, поэтому F(-1) = -1 + 3 = 2
Теперь идем снизу вверх, подставляя известные значения.
Сейчас мы знаем только F(-1)=2 и F(2)=5, этого достаточно, чтобы вычислить F(3) и F(6)
F(3) = 5 * F(-1) = 5 * 2 = 10
F(6) = (6 + 2) * F(2) = 8 * 5 = 40
Теперь мы знаем все, чтобы вычислить F(4):
F(4) = 4 + F(3) + 2F(2) = 4 + 10 + 2 * 5 = 24
Теперь можем посчитать F(5):
F(5) = 5 + F(4) + 2F(3) = 5 + 24 + 2 * 10 = 49
Теперь знаем все для F(7):
F(7) = 7 + F(6) + 2F(5) = 7 + 40 + 2*49 = 145