无限递归(当n接近无穷大)总是会导致堆栈溢出吗?

时间:2015-11-09 15:17:44

标签: recursion

与递归有关的理论问题....

对于任何递归问题,如果你的n真的非常大,那么它总是在某个n值处分段错误无论如何?

1 个答案:

答案 0 :(得分:0)

是的,如果它是真正的递归。对于递归,进程至少需要堆栈上的返回地址。这会占用堆栈空间,因此最终会导致StackOverFlow。

如果您期望如此大量的递归调用,那么您最好聚合结果。

递归总和将是:

Sum of all elements in a sequence = 
    first element + 
    sum of all elements in the sequence without the first one;

而不是这样,使用没有递归的版本

sum = 0;
elementsLeft = complete sequence   
while still elements left
{
    sum = sum + first element of elementsLeft
    elementsLeft = elementsLeft without the first element
}