与递归有关的理论问题....
对于任何递归问题,如果你的n真的非常大,那么它总是在某个n值处分段错误无论如何?
答案 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
}