gpt4 book ai didi

language-agnostic - 递归如何使运行时内存的使用变得不可预测?

转载 作者:行者123 更新时间:2023-12-04 20:23:06 25 4
gpt4 key购买 nike

引自 Code Complete 2 ,

int Factorial( int number ) {
if ( number == 1 ) {
return 1;
}
else {
return number * Factorial( number - 1 );
}
}

In addition to being slow [1] and making the use of run-time memory unpredictable [2], the recursive version of this routine is harder to understand than the iterative version, which follows:

int Factorial( int number ) {
int intermediateResult = 1;
for ( int factor = 2; factor <= number; factor++ ) {
intermediateResult = intermediateResult * factor;
}
return intermediateResult;
}


我认为缓慢的部分是因为不必要的函数调用开销。

但是递归如何使运行时内存的使用变得不可预测?

我们不能总是预测需要多少内存(因为我们知道递归应该何时结束)?我认为它会像迭代案例一样不可预测,但不再是了。

最佳答案

由于递归方法反复调用自己,需要大量的堆栈内存。由于栈是有限的,超出栈内存就会出错。

关于language-agnostic - 递归如何使运行时内存的使用变得不可预测?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4080871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com