Автор | Сообщение |
|
Отправлено: 28.11.21 18:26. Заголовок: Задача №3469
(Е. Джобс) Алгоритм вычисления значения функции F(n), где n – натуральное число, задан следующими соотношениями: F(n) = 1 при n = 0 F(n) = 2·F(1-n) + 3·F(n-1) + 2, если n > 0, F(n) = - F(-n), если n < 0. Чему равна сумма цифр значения F(50)? при F(50) программа зависает на долго. а при F(5) выводит правильный ответ. значение 50 - это опечатка? def f(n): if n==0: return 1 elif n>0: return 2*f(1-n)+3*f(n-1)+2 elif n<0: return (-1)*f(-n) print(f(50))
|
|
|
Ответов - 4
[только новые]
|
|
|
Отправлено: 28.11.21 18:37. Заголовок: Нет, просто решать е..
Нет, просто решать её в лоб не надо
|
|
|
|
Отправлено: 29.11.21 01:13. Заголовок: Ответ
цитата: | def f(n): if n == 0: return 1 if n == 1: return 7 if n > 1: return f(n - 1) + 2 print(sum( map(int, str(f(50))) )) |
|
|
|
|
|
Отправлено: 06.12.21 13:30. Заголовок: Вопрос Кабанову А.М.
Уважаемый Алексей Михайлович! А как эту задачу решить "не в лоб"? Я пытался решить подобную задачу 16.99 в лоб. Нужно найти F(47), но при F(40) время решения около 10 минут,а дальше я не пробовал. Как ее решить "не в лоб"? Подскажите, пожалуйста.
|
|
|
|
Отправлено: 30.01.22 20:57. Заголовок: Мемоизация выручит)
Надо задействовать мемоизацию. В Python и PascalABC.NET все сработало!
|
|
|
|