Форум » Рекурсивные процедуры и функции » задание 16 № 46 » Ответить

задание 16 № 46

Елена Пушкина: Добрый день. В данном задании не задана верхняя граница n. Указан ответ 92. Но такой ответ получается, если n брать на интервале от 1 до 100. Если интервал n больше, то и ответ будет больше. Или я чего-то не учла? У меня такая программа: var f: array[1..1000] of longint; a, k: integer; begin for a:= 1 to 3 do f[a]:=a; k:=3; for a:= 4 to 1000 do begin if a mod 2=0 then f[a]:=2*a*a+f[a-1] else f[a]:=a*a*a+a+f[a-1]; if f[a]<10000000 then inc(k) end; writeln(k); end. На таком интервале получается 434. Подскажите, что не так? Или нужно уточнить задание?

Ответов - 1

OlgaChe1: [pre]def F(n): if n <=3: return n elif n % 2 == 0: return 2*n*n + F( n-1) else: return n*n*n +n + F(n-1) count = 0 n = 1 rez = F(n) while rez < 10**7: n +=1 rez = F(n) count +=1 # можно обойтись n, но потом вычесть 1 (n - натуральное) print (count)[/pre]



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