高德纳的manorboy编译器递归测试(pascal版)。为什么运行错误
type fun=function:integer;function zero:integer;begin zero:=0 end;
function one:integer;begin one:=1 end;
function negone:integer;begin negone:=-1 end;function A(k:integer;x1,x2,x3,x4,x5:fun):integer;function B():integer;
begin
k:=k-1;
B:=A(k,fun(@B),fun(@x1),fun(@x2),fun(@x3),fun(@x4))
end;begin
if k<=0
then A:=x4()+x5()
else A:=B()
end;begin
writeln(A(10,@one,@negone,@negone,@one,@zero))
end.
type fun=function:integer;function zero:integer;begin zero:=0 end;
function one:integer;begin one:=1 end;
function negone:integer;begin negone:=-1 end;function A(k:integer;x1,x2,x3,x4,x5:fun):integer;function B():integer;
begin
k:=k-1;
B:=A(k,fun(@B),fun(@x1),fun(@x2),fun(@x3),fun(@x4))
end;begin
if k<=0
then A:=x4()+x5()
else A:=B()
end;begin
writeln(A(10,@one,@negone,@negone,@one,@zero))
end.