28 lines
639 B
Ada
28 lines
639 B
Ada
with Ada.Text_IO; use Ada.Text_IO;
|
|
procedure Test_Binomial is
|
|
function Binomial (N, K : Natural) return Natural is
|
|
Result : Natural := 1;
|
|
M : Natural;
|
|
begin
|
|
if N < K then
|
|
raise Constraint_Error;
|
|
end if;
|
|
if K > N/2 then -- Use symmetry
|
|
M := N - K;
|
|
else
|
|
M := K;
|
|
end if;
|
|
for I in 1..M loop
|
|
Result := Result * (N - M + I) / I;
|
|
end loop;
|
|
return Result;
|
|
end Binomial;
|
|
begin
|
|
for N in 0..17 loop
|
|
for K in 0..N loop
|
|
Put (Integer'Image (Binomial (N, K)));
|
|
end loop;
|
|
New_Line;
|
|
end loop;
|
|
end Test_Binomial;
|