Рекурсивные алгоритмы Flashcards

1
Q

Посчитайте сумму элементов массива не используя циклов

A
int Sum(int[] array, int i = 0)
{
  if (i < array.Length)
    return array[i]
      \+ Sum(array, i + 1);
  return 0;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Как вычислить максимальную глубину рекурсии для конкретной функции?

Почему для двух функций может отличаться максимальная глубина рекурсии?

A

Стек исчерпан, когда получили StackOverflowException.Но в последних версиях .NET Framework его нельзя поймать. Чтобы посчитать число вызовов нужно использовать счетчик в некотором поле, а результаты куда-то сохранять: в файл или на консоль.
Максимальная глубина рекурсии может отличаться в зависимости от количество параметров у функции.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly