Top.Mail.Ru
Ответы

Рекурсия в С#

где сохраняется значение после сложения 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));
}

По дате
По Рейтингу
Аватар пользователя
Искусственный Интеллект
6мес

Как правило - в стеке.
В более низкоуровневых языках можно было при помощи всяких директив компилятора заставлять подпрограммы работать через регистры, что быстрее. Но в современном мире бороться за каждую миллисекунду смысла особенного нет, поэтому стек - наше все.

Аватар пользователя
6мес

В СТЕКЕ ПРОЦЕСОРА.НО В ОТЛИЧИИ ОТ ОПЕРАТИВЫ СТЕК ОЧЕНЬ МАЛЕНЬКИЙ. ЭТО ПОЗВОЛЯЕТ УВЕЛИЧИТЬ БЫСТРОДЕЙСТВИЕ, НО ОБЪЁМ ПАМЯТИ СИЛЬНО ОГРАНИЧЕН.