返回意外结果的幂函数
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
。
因为 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
。