奇怪的难题,也许要一些编译的知识
asj 2001-01-05 11:34:00 程序中用到了这样的一个结构
//按钮1处理程序
procedure button1Click();
begin
p1;
end;
//按钮2处理程序
procedure button2Click();
begin
p2;
end;
procedure p1;
begin
CoreP(1);
end;
procedure p2;
begin
CoreP(2);
end;
procedure CoreP(i: Integer);
//子程序,用到递归
procedure ChildP;
begin
...
ChildP;
...
end;
begin
ChildP;
if i = 1 then
...
else
...
end;
结果速度爆慢,实际上只有递归层次为零的时候还能等到结束。
结果,我把按钮的处理函数改变,不再使用P1,P2,而是直接用参数调用CoreP,速度就可以接受了,这是为什么?
递归的成本和函数被调用的层次有关么?