Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Рекурсия в С#

druziseeee Ученик (102), открыт 10 часов назад
где сохраняется значение после сложения return Foo(array, k + 1) + Foo(array, k + 1)
1 + 1 = 2;
и где эта 2 сохраняется для дальнейшего сложения второй 2 ???

static int Foo(int[] array, int k = 0)
{
int result;

if (k >= array.Length)
return 1;

return Foo(array, k + 1) + Foo(array, k + 1);
}
static void Main()
{
int[] array = new int[2];

Console.WriteLine(Foo(array));
}
2 ответа
Комнатный Рэмбо Мастер (1342) 10 часов назад
В СТЕКЕ ПРОЦЕСОРА.НО В ОТЛИЧИИ ОТ ОПЕРАТИВЫ СТЕК ОЧЕНЬ МАЛЕНЬКИЙ. ЭТО ПОЗВОЛЯЕТ УВЕЛИЧИТЬ БЫСТРОДЕЙСТВИЕ, НО ОБЪЁМ ПАМЯТИ СИЛЬНО ОГРАНИЧЕН.
Jurijus Zaksas Искусственный Интеллект (445813) 23 минуты назад
Как правило - в стеке.
В более низкоуровневых языках можно было при помощи всяких директив компилятора заставлять подпрограммы работать через регистры, что быстрее. Но в современном мире бороться за каждую миллисекунду смысла особенного нет, поэтому стек - наше все.
Похожие вопросы