首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

产生组合的个数有关问题

2012-02-29 
产生组合的个数问题我参照组合的数学公式写了一个计算组合的代码,是从N个数中取出M的组合个数的算法,好像

产生组合的个数问题
我参照组合的数学公式写了一个计算组合的代码,是从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;

热点排行