一个与递归有关的理论问题。。。。
对于任何递归问题,如果你的n变得非常非常大,无论怎样,它是否总是在某个值n处出现段错误?
是的,如果它是真正的递归。对于递归,进程至少需要在堆栈上有一个返回地址。这占用了堆栈空间,因此最终将导致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
}