写一个函数实现 s=1+2+3+4....+n的和要求循环实现

解决方案 »

  1.   

    s:=(n+1)*(n/2)------------干嘛要用循环?
      

  2.   

    function total(n:integer):integer
    for i:=1 to n do
    begin
    s=s+i;
    end
    或者更简单:
    S=((N+1)*N)/2即可。
      

  3.   

    function total(n:integer):integer
    for i:=1 to n do
    begin
    try
    s=s+i;
    except
    showmessage('wrong');
    end
    或者更简单:
    S=((N+1)*N)/2即可。
      

  4.   

    1.楼主干吗要循环实现?有现成的公式干吗不用?
    2.楼上都n:integer????n:int64这样正解.....
    3.如果你用公式的话就不会溢出.....
      

  5.   

    如果真要精确地计算无限大的数据的话,我想现代计算机绝对做不能,因为它们会受到内存的限制(除非内存足够大), 由于内存的限制,所有的开发语言的变量都会有一定的范围,这就是为什么你们所碰到溢出的原因。如果你不是在钻牛角尖的话,我想int64类型已足够大。或者你还不满足,你也可以用Stream来处理。For Example:function TForm1.aa(const n: integer): int64;
    var
      i: integer;
    begin
      for i := 1 to n do
      begin
        try
          Result := Result + i;
        except
          RaiseLastWin32Error;
        end;
      end;
    end;