返回意外结果的幂函数

power function returning unexpected results

因为 pascal 没有幂函数(不像其他语言)我被要求创建一个函数 power。我所做的是:

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 循环来显示 8 从 0 到 8 的幂:

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

问题是我得到以下信息 如果我等于 5,我得到一个负数,如果我大于 5,我得到 0 作为结果。

85 是 215,它达到了 integer 的大小限制,导致 integer overflow .为避免这种情况,您可以改用 longint