Задание 16. (ДЕМО-2023)
Алгоритм вычисления значения функции F(n), где n – натуральное число,
задан следующими соотношениями:
F(n) = 1 при n = 1;
F(n) = n × F(n − 1), если n > 1.
Чему равно значение выражения F(2023) / F(2020)?
Решение
function F( n: integer ): biginteger;
begin
if n =1 then Result := 1
else Result := n*F(n-1);
end;
begin
print (F(2023)/F(2020));
end.
Ответ: 8266912626
ПРИМЕРЫ:
1. Алгоритм вычисления функции F(n) задан следующими соотношениями:
F(n) = 2n при n <=5
F(n) = F(n–2) + 3×F(n/2) + n, если n >5 и чётно,
F(n) = F(n–1) + F(n–2) + F(n–3), если n > 5 и нечётно.
Чему равно значение функции F(99) + F(100)?
function F( n: integer ): integer;
begin
if <=5 then Result := 2*n
else if n mod 2=0 then
Result := F(n-2)+3*F(n div 2)+n
else Result := F(n-1)+ F(n-2)+F(n-3);
end;
begin
print (F(99)+F(100));
end.
Ответ: 142139494
2. Определите, сколько символов * выведет эта процедура при вызове F(22):
procedure F( n: integer );
begin
write('*');
if n >= 1 then begin
write('*');
F(n-1); F(n-2); F(n-3);
end;
end;
Ответ: 1957585
3. Алгоритм вычисления значения функции F(n), где n — целое неотрицательное число, задан следующими соотношениями: F(0) = 0;
F(n) = F(n / 2), если n > 0 и при этом чётно;
F(n) = 1 + F(n − 1), если n нечётно.
Сколько существует таких чисел n, что 1 ≤ n ≤ 1000 и F(n) = 3?
var n: longint;
i, k: integer;
function F(n: longint): longint;
begin
if n = 0 then F := 0
else if (((n mod 2) = 0) and (n >0)) then F := F(n div 2)
else F := 1 + F(n - 1);
end;
begin
k := 0;
for i := 1 to 1000 do
if F(i) = 3 then k := k + 1;
writeln(k);
end.
Ответ: 120
4.Определите наименьшее значение n, при котором сумма чисел, которые будут выведены при вызове F(n), будет больше 5000000. Запишите в ответе сначала найденное значение n, а затем через пробел – соответствующую сумму выведенных чисел.
procedure F(n: integer);
begin
writeln(2*n+1);
if n >1 then begin
writeln(3*n-8);
F(n-1);
F(n-4);
end;
end;
Ответ: 40791973
Справочная информация
Рекурсия на Pascal:
function F( n: integer ): integer; begin if n …. then F := … else F := …..; end; |
Авторизуйтесь, чтобы оставить свой комментарий: