решить. Питон или паскаль Алгоритм вычисления функции F(n), где n – целое неотрицательное число, задан следующими соотношениями:
F(n) = 0 при n = 0
F(n) = F(n/2) – 2 при n > 0 для чётных n
F(n) = 2 + F(n–1) при n > 0 для нечётных n
Сколько существует чисел n, меньших 1000, для которых значение F(n) будет равно –2?
ответ: 111
Python:
def F(n):
if n == 0: return 0
if n % 2 == 0: return F(n/2) -2
if n % 2 == 1: return 2 + F(n - 1)
print(len([i for i in range(1000) if F(i) == -2]))
Pascal
Объяснение:
function f(n:integer): integer;
begin
if n = 0 then
result := 0
else
if n mod 2 = 0 then result := f(trunc(n/2))-2
else result := 2+f(n-1)
end;
var
i, k: integer;
begin
k:=0;
for i := 1 to 999 do
if f(i) = -2 then inc(k);
print(k)
end.