Цитата из 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
Я думаю, что медленная часть связана с ненужными накладными расходами на вызов функций.
Но как рекурсия делает непредсказуемым использование оперативной памяти?
Разве мы не всегда можем предсказать, сколько памяти потребуется ( как мы знаем, когда предполагается окончание рекурсии)? Я думаю, что это было бы так же непредсказуемо, как итеративный случай, но не более того.