Форум » Рекурсивные процедуры и функции » Задача 16.70 » Ответить

Задача 16.70

aln1947: Добрый день! С праздником всех! Помогите разобраться,пожалуйста. Задача 16.70 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(25), через пару минут пришел ответ: 55. Т.е. программа работает, но что делать с F(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 -F(-n) print (F(25))

Ответов - 2

polyakovss: Здравствуйте, Александр Львович! Анализ алгоритма задачи 16.70 позволяет записать решение, например, так: [pre2] def f(n): if n == 0: return 1 if n == 1: return 7 if n > 1: return f(n - 1) + 2 print(sum([int(digit) for digit in list(str(f(50)))]))[/pre2] Посмотрите здесь (polyakovss Сообщение: 426).

aln1947: спасибо большое, Сергей Сергеевич! Буду пробовать.



полная версия страницы