是否存在递归函数/算法,其中使用堆栈帧是不可避免的(不能完全尾递归)?

时间:2013-09-19 04:18:33

标签: algorithm recursion tail-recursion

我试图想出一些递归算法/函数的例子,这些算法/函数不能以避免使用大量堆栈内存的方式重写(即不能使用完全尾递归,也不能使用不使用a的循环重写堆)。这样的功能存在吗?

我认为quicksort可能是候选者,但我不确定是否可以重写它以使用单个尾递归函数调用。

1 个答案:

答案 0 :(得分:0)

在一般情况下需要多个调用的每个算法都不能在没有回溯堆栈的情况下进行迭代或增加堆栈,因为第一个调用不在尾部位置并且将始终具有延续。

简单的斐波纳契,快速排序和树的总和都属于这一类。