幂函数返回意外结果

用户名

由于pascal没有幂函数(与其他语言不同),我被要求创建一个幂函数。我所做的是这样的:

function pow(x,n:integer):integer;
    begin
    pow:=1;
    if n = 0 then
        pow:=1
    else if n=1 then
        pow:=x
    else if n > 0 then
        pow:=x*pow(x,n-1)
    else
        pow:=-x*pow(x,abs(n)-1);
end;

现在在主体中,我有一个for循环来显示从0到8的8的幂:

for i:=0 to 8 do
    writeln('8^',i,'=',pow(8,i));

问题是,如果我等于5,我得到以下结果:如果我等于负数,并且如果我大于5,那么我得到0。

穆雷尼克

8 5是2 15,其达到的integer大小限制导致整数溢出为避免这种情况,您可以改用a longint

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章