Какие из приведенных ниже подпрограмм вычисляют функцию двойного факториала (n!!), определяемую следующим образом: 0!! =11!! = 1n!! = n*(n-2)!!, для любого натурального n.
(Ответ считается верным, если отмечены все правильные варианты ответов.)
Варианты ответа
function f(c:longint):longint;begin if c =1 then f:= 1 else f:= f(c-1)+f(c-2)end;
function f(n,k:longint):longint;var ff: longint;begin if (k=0)or(k=n) then f:= 1 else if k>n then f:= 0 else begin ff:= f(n-1,k-1)+f(n-1,k); f:= ff end;end;
function f(c:longint):longint;var a: array[1..1000]of longint; i: integer;begin a[1]:= 1; a[2]:= 1; for i:= 3 to c do a[i]:= a[i-1]+a[i-2]; f:= a[c]end;
function f(c:longint):longint;begin if (c=0)or(c=1) then f:= 1 else f:= f(c-2)*cend;(Верный ответ)
function f(c:longint):longint;var ff: longint;begin ff:= 1; while c >1 do begin ff:= ff*c; dec(c,2); end; f:= ffend;(Верный ответ)
function f(n,k:longint):longint;var a: array[0..n]of longint; i,j,t,tt: longint;begin if k>n then f:= 0 else if (k=n)or(k=0) then f:= 1 else begin a[0]:= 1; a[1]:= 1; for i:= 2 to k do a[i]:= 0; for i:= 2 to n do begin t:= 1; for j:= 1 to i-1 do begin tt:= a[j]+t; t:= a[j]; a[j]:= tt; end; a[i]:= 1; end end; f:= a[k]end;