Ниже на четырёх языках записаны рекурсивные алгоритмы F и G.
Копировать
function F(n, k : integer) : integer;
begin
if k > 0 then
F := n * F(n, k - 1)
else
F := 1
end;
function G(n : integer) : integer;
begin
if n > 0 then
G := G(n - 1) + F(n, n - 1)
else
G := 0
end;
Копировать
int F(int n, int k) {
if (k > 0)
return n * F(n, k - 1);
else
return 1;
}
int G(int n) {
if (n > 0)
return G(n - 1) + F(n, n - 1);
else
return 0;
}
Копировать
FUNCTION F(N, K)
IF K > 0 THEN
F = N * F(N, K - 1)
ELSE
F = 1
END IF
END FUNCTION
FUNCTION G(N)
IF N > 0 THEN
G = G(N - 1) + F(N, N - 1)
ELSE
G = 0
END IF
END SUB
Копировать
def F(n, k) :
if k > 0 :
return n * F(n, k - 1)
else :
return 1
def G(n) :
if n > 0 :
return G(n - 1) + F(n, n - 1)
else :
return 0
При каком наименьшем целом значении p значение функции G(p) окажется больше 500?