C # Урок, рекурсия
C # позволява метод да се самоизвиква. Този процес се нарича рекурсия, и метод, който се извиква, е рекурсивен. По принцип рекурсията е процес, по време на който нещо се самоопределя. В това отношение донякъде напомня на циклично определение. Основната разлика между рекурсивния метод е, че той съдържа израз, в който методът се извиква. Рекурсията е ефективен механизъм за управление на програмата.
Класически пример за рекурсия е изчисляването на факториал на число:
Обърнете внимание, че рекурсивният факториален метод се извиква и променливата i намалява с 1 с всяко повикване.
Рекурсивните версии на много процедури могат да се изпълняват малко по-бавно от техните итеративни аналози поради допълнителните режийни системни ресурси при множество извиквания на методи. Ако има твърде много такива повиквания, тогава системният стек може в крайна сметка да прелее. И тъй като параметрите и локалните променливи на рекурсивния метод се съхраняват в системния стек и всеки път, когато този метод бъде извикан, се създава ново копие от тях, в един момент стекът може да бъде изчерпан. В този случай се хвърля изключение и общото езиково изпълнение (CLR) хвърля съответно изключение. Но трябва да се притеснявате за това само ако рекурсивната процедура не е изпълнена правилно.