Каким образом рекурсия делает использование оперативной памяти непредсказуемым?

Цитата из Code Complete 2 ,

 int Factorial (int number) {
 if (число == 1) {
 возврат 1;
 }
 else {
 номер возврата * Факториал (число - 1);
 }
}

Помимо того, что медленный [1] и заставляет использование оперативной памяти непредсказуемая [2], рекурсивная версия этого распорядка труднее понять чем итеративная версия, который следует:

 int Factorial (int number) {
 int intermediateResult = 1;
 for (int factor = 2; factor 

Я думаю, что медленная часть связана с ненужными накладными расходами на вызов функций.

Но как рекурсия делает непредсказуемым использование оперативной памяти?

Разве мы не всегда можем предсказать, сколько памяти потребуется ( как мы знаем, когда предполагается окончание рекурсии)? Я думаю, что это было бы так же непредсказуемо, как итеративный случай, но не более того.

5
задан Lazer 2 November 2010 в 18:29
поделиться