Как в ЕГЭ · 7 из 20
№16. Функция, которую в лоб не досчитать
По мотивам задания №16. Функция задана рекурсивно, и её значение просят для большого n. Рекурсия, переписанная из условия дословно, на большом n или зовёт себя миллиарды раз, или падает ошибкой RecursionError: глубина вызовов в Python ограничена тысячей. Значения проще посчитать снизу вверх.
Что сделать
Посчитайте F(n) по правилам условия так, чтобы и n = 10 000 считалось мгновенно.
Что приходит
n— натуральное число, от 1 до 10 000
Что вернуть
Значение F(n) — целое число.
Допишите функцию f в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
F(1) = 1, F(2) = 2. F(3) — нечётное: F(2) + F(1) = 3. F(4) — чётное: F(3) − F(2) + 4 = 5. F(5) = F(4) + F(3) = 8.
f(5)
8
F(n) = n при n < 3;
F(n) = F(n − 1) + F(n − 2), если n > 2 и n нечётно;
F(n) = F(n − 1) − F(n − 2) + n, если n > 2 и n чётно.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.