Форум » Рекурсивные процедуры и функции » 16-100 » Ответить

16-100

Балдинова: Добрый день, не могли бы помочь оптимизировать код, питон не в состоянии просчитать. [pre2] Алгоритм вычисления функции F(n), где n – целое неотрицательное число, задан следующими соотношениями: F(n) = n + 3, при n ≤ 3 F(n) = F(n – 2) + n, при n > 3 и четном значении F(n-1), F(n) = F(n – 2) + 2· n, при n > 3 и нечетном значении F(n-1) Определите сумму значений, являющихся результатом вызова функции для значений n в диапазоне [40; 50]. def F(n): if n<=3: return n+3 elif F(n-1)%2==0: return F(n-2)+n else: return F(n-2)+2*n s=0 for a in range (40,50+1): s=s+F(a) print (s) [/pre2]

Ответов - 1

Поляков: Здесь лучше решать через динамическое программирование: [pre2] F = [0]*(50+1) s = 0 for n in range(50+1): if n<=3: F[n] = n + 3 elif F[n-1] % 2 == 0: F[n] = F[n-2] + n else: F[n] = F[n-2] + 2*n if 40 <= n <= 50: s += F[n] print (s)[/pre2]А откуда такая интересная задача?



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