创建递归方法时,通常会包含一个深度参数,尤其是当我需要某种形式的纾困机制时。该代码通常是这样的
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;
我称它为没有深度参数
Recurse(<Params>);
有没有其他方法可以轻松找到深度?
最佳答案
如果您有一种方法可以遍历堆栈并查看函数的入口在其中有多少次,那么我想您可以这样做。但是随后您会注意到aDepth参数也在那里,并且您将意识到aDepth比监听堆栈更容易,麻烦也更少。
IMO,最简单的解决方案是这里最好的解决方案,它具有可移植性且面向未来,与您可以发明的任何堆栈侦听解决方案不同。
是的,还有其他方法,但是您的原始解决方案是最好的,IMO。