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
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;