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

4885

student5: Алгоритм вычисления значения функции F(n), где n – целое неотрицательное число, задан следующими соотношениями: F(n) = 1 при n ≤ 1 F(n) = 11·n + F(n - 1) если n > 1 и n чётное F(n) = 11·F(n - 2) + n в остальных случаях Определите сумму четных значений F(n) для всех n на отрезке [35,50]. В качестве ответа запишите количество цифр в десятичной записи этой суммы. Примечание: необходимо использовать арифметику многоразрядных чисел. Подскажите, что не так в решении задачи? function f(n:integer):integer; Begin if n<=1 then f:=1; if (n>1) and (n mod 2=0) then f:=11*n+f(n-1); if (n>1) and (n mod 2<>0) then f:=11*f(n-2)+n; end; var n,x,s:integer; begin for n:=35 to 50 do begin x:=f(n); If x mod 2=0 then s:=s+x; end; writeln(s); end. Хотя бы вывести само число.

Ответов - 2

MrAndrewson: Например, значение f(35) равно 667190077619067774, что далеко за пределами типа integer

егэшник: [pre2] ## function F(n: integer): biginteger := n <= 1 ? 1 : (n > 1) and (n mod 2 = 0) ? 11 * n + F(n - 1) : 11 * F(n - 2) + n; var s := 0bi; for var n := 35 to 50 do if F(n) mod 2 = 0 then s := s + F(n); print(s) [/pre2]



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