Рекурсивные алгоритмы Flashcards
1
Q
Посчитайте сумму элементов массива не используя циклов
A
int Sum(int[] array, int i = 0) { if (i < array.Length) return array[i] \+ Sum(array, i + 1); return 0; }
2
Q
Как вычислить максимальную глубину рекурсии для конкретной функции?
Почему для двух функций может отличаться максимальная глубина рекурсии?
A
Стек исчерпан, когда получили StackOverflowException.Но в последних версиях .NET Framework его нельзя поймать. Чтобы посчитать число вызовов нужно использовать счетчик в некотором поле, а результаты куда-то сохранять: в файл или на консоль.
Максимальная глубина рекурсии может отличаться в зависимости от количество параметров у функции.