回 帖 发 新 帖 刷新版面

主题:[讨论]关于阶乘的问题,求助各位高手。谢谢

计算:1+1/1!+1/2!+1/3!+……1/20!
        小弟不才,我怎么也做不出来,好象要用高精度的,谁能告诉我啊。
        谢谢

回复列表 (共12个回复)

沙发

var
  m,x:integer;
  e:real;
  begin
 m:=1;x:=0;e:=0;
 repeat x:=x+1;
        m:=m*x;
        e:=e+1/m
  until x=20;
 write(e);
end.

这应该能过,不过不是我的程序,嘻嘻!:)

板凳

不可以的吧,20的!是超出整形范围的啊

3 楼

哦,
你小数点后要几位阿,如果要求不高的话,就用real存储了
var
  i:integer;
  a,k,b:real;
begin
k:=1;a:=1;
for i:=2 to 20 do
  begin
    k:=k/i;
    a:=a+k;
  end;
write(a);
end.

4 楼

如果要求高,就改为高精度存储就可以了

5 楼

是不是先用高精度算出介乘,再用高精度算除法,最后用高精度算加法?谢谢.

6 楼

几乎不需要用高精度!!!!

7 楼

才到20, extended啊extended

8 楼

直接用real就行了,最后用round四舍五入一下就好了.

9 楼

[quote]直接用real就行了,最后用round四舍五入一下就好了.
[/quote]

real才精确到小数点后9位, 貌似有点少

10 楼

这道题目似乎是我们培训教材上的!
应该不用高精度就可以做.
似乎REAL型就可以解决!

我来回复

您尚未登录,请登录后再回复。点此登录或注册