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

егэ16-№49

timsc1: Здравствуйте! {49) Алгоритм вычисления функции F(n) задан следующими соотношениями: F(n) = n при n ≤ 3; F(n) = 2 • n + F(n – 1) при чётных n > 3; F(n) = n • n + F(n – 2) при нечётных n > 3; Определите количество натуральных значений n из отрезка [1; 100], при которых значение F(n) кратно 3. } Программа: function f(n:integer):biginteger; begin if n<=3 then result:=1; if (n>3)and(n mod 2=0)then result:=2*n+f(n-1); if (n>3)and(n mod 2<>0)then result:=n*n+f(n-2); end; var s,k,i:integer; begin k:=0; for i:=1 to 100 do if f(i)mod 3=0 then k+=1; println(k); end. Программа выдаёт ответ 33, а в сборнике ответ 32. Программу также сделал через массив. Тоже ответ 33. На питоне тоже ответ 33. Что не так делаю???

Ответов - 2

nikson: У Вас в коде if n<=3 then result:=1; А в условии F(n) = n при n ≤ 3; Поменяйте 1 на n

timsc1: nikson , спасибо, глупая ошибка...



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