是不是因为变量的副作用??SOS紧急!!
pascal吧
全部回复
仅看楼主
level 3
yep0382 楼主

program exp_2;
var x:integer;
function hs(i:integer):integer;
var
m:array [1..100]of integer;
begin
i:=3;
repeat
m[i]:=m[i-1]*3-1;
i:=i-1;
m[1]:=1;
until(i=1);
hs:=m[3];
end;
begin
x:=3;
write('N(3):= ',hs(x));
end.
2015年01月05日 13点01分 1
level 3
yep0382 楼主
运行的时候第一个出现的结果是N(3):=-1 然后才是N(3):=5; 我不知道哪里出错了.是不是因为非局部变量的副作用?
2015年01月05日 13点01分 2
因为i=3开始,先算 m[3]:=m[2]*3-1 , 这个时候, m[2]==多少? m[2]的是多少[睡觉]?
2015年01月05日 14点01分
level 9
function hs(i:integer):integer;
begin
if(i=1) then
hs:=1
else
hs:=(hs(i-1)*3)-1;
end;
2015年01月05日 14点01分 3
谢啦
2015年01月06日 01点01分
1