Podwójna silnia

0

Mam takie zadanie z informatyki: Mam napisać algorytm obliczania podwójnej silni (6!! = 246, 7!! = 135*7 itd) I nie bardzo wiem jak to zrobić. Błagam o pomoc!!!! [glowa]

0

type wynik= dword; //albo extended jak chcesz liczyc dla duzych n
function podwsilnia(n:dword): wynik;
var k:dword;
l:wynik;
begin
if n=0 then begin result:=1; exit; end;
if (n mod 2)=0 then k:=2 else k:=1;l:=k;
while k+2<=n do begin l:=l*(k+2);inc(k,2); end;
result:=l;
end;
No chyba jakoś tak, tylko jeszcze dobrze by było na początku sprawdzic wielkosc n i ocenic czy to sie zmiesci w zakresie dworda; jesli nie no to uzyc l typu extended.

No tak , między dword a extended, jest jeszcze int64 :)

0

Znacznie szybciej i znacznie bardziej skomplikowanie :d :

function costam(m : byte) : dword;
var
  k,l,i : byte;
begin
  result := 1;

  k := (m and 1);
  l := m shr 1;

  for i := 1 to l do result := result * (i shl 1+k);
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1