读书人

产生组合的个数有关问题

发布时间: 2012-02-29 16:44:11 作者: rapoo

产生组合的个数问题
我参照组合的数学公式写了一个计算组合的代码,是从N个数中取出M的组合个数的算法,好像有问题,请看看错在哪里?
用三个edit分别输入N、M(n>m)和输出取得的组合个数,代码如下:
var
i,n,m,n1,m1,m2:Integer;

begin
n:=strtoint(edit1.text);
m:=strtoint(edit2.text);

n1:=1;
for i:=1 to n do
begin
n1:=n1*i;
end;
m1:=1;
for i:=1 to n-m do
begin
m1:=m1*i;
end;
m2:=1;
for i:=1 to m do
begin
m2:=m2*i;
end;

edit3.Text:=inttostr(Trunc(n1/m1/m2));

end;

我是个初学者,各位哥哥们帮忙看看,错在哪里?谢谢

[解决办法]
因为已经超出Integer表达的最大值了,所以结果不正确

可以用Int64定义变量:
var
i:integer;
n,m,n1,m1,m2:Int64;

读书人网 >.NET

热点推荐