在Delphi中:如何在不使用参数的情况下找到递归深度?

Sve*_*sli 2 delphi recursion

当我创建递归方法时,我经常包含一个Depth参数,特别是当我需要某种救助机制时.代码通常是这样的

procedure Recurse(<Params>; aDepth : integer = 0);
begin
  if aDepth > SomeLimit then
  begin
    //Tidy up, return best result found>
    exit;
  end;

  <stuff>

  if <Condition> then
    Recurse(<Params>; aDepth+1)
  else 
  begin 
    //Tidy up, return result of endnode>
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我称之为没有Depth参数

Recurse(<Params>);
Run Code Online (Sandbox Code Playgroud)

还有另一种方法可以轻松找到深度吗?

Chr*_*ton 7

如果你有办法走栈,看看你的函数的入口点在那里多少次,我想你可以这样做.但是你会注意到你的aDepth参数也是正确的,你会发现aDepth比窥探堆栈更简单,更麻烦.IMO,简单的解决方案在这里是最好的,它是可移植的,面向未来的,不像你可以发明的任何堆栈侦听解决方案.
所以是的,还有其他方法,但你最初的解决方案是最好的,IMO.