有什么时候我想在递归时使用显式堆栈吗?

Sco*_*r84 2 language-agnostic recursion stack

有没有什么情况我想在我的算法中使用显式堆栈数据结构,而不是做递归(使用调用堆栈)?

以一种方式做另一种方式有什么好处吗?我认为使用显式数据结构会更高效,因为它不需要方法调用,但再次是微优化领域.

Fre*_*abe 5

我可以想到一个案例,你可以争论一个明确的堆栈:

您可能在一个系统中,进入和/或退出堆栈帧是昂贵的,并且您的递归深度非常深.想象一下树中的深度优先.

在这样的设置中,如果您发现请求的树节点100级别深,则如果您正在使用递归,则需要逐个销毁100个堆栈帧.

使用显式堆栈,您可以从函数返回,并立即释放完整的堆栈.