Ключова разлика: При програмирането рекурсията може да се обясни с рекурсивна функция. Рекурсивната функция е тази, която се призовава отново да повтори кода. От друга страна, итерацията се постига чрез итеративна функция, която се повтаря, за да се повтори част от кода.
При програмирането, рекурсията и итерацията се използват за постигане на повторения. Те се отнасят до процес, който се повтаря многократно. Рекурсията се основава на подход, при който нещо се отнася до себе си, докато не бъде изпълнено условие. Смята се, че методът е рекурсивен, ако може да се нарича пряко или косвено като -
{
... име () ...
}
или
void name ()
{
... игра() ...
}
void game () {
... име () ...
}
За успешна рекурсия трябва да се има предвид, че всяко обаждане, направено в процеса на рекурсия, трябва да опрости изчисленията. Рекурсията се постига чрез определяне на основен случай.
int factorial (int N)
{
if (N == 0) връща 1;
иначе ще се върне (N * факториал (N-1));
}
В този пример рекурсията може лесно да се види в оператора (N * факториал (N-1)), където отново извиква факторната функция. Рекурсията е много полезна, тъй като помага за съкращаване на кода. Въпреки това, рекурсията е малко бавна в изпълнението.
функционален фактор (n)
{
var loop, резултат;
резултат = 1;
за (цикъл = 1; контур <= N; контур ++)
{
резултат = цикъл;
}
резултат от връщане;
}
В този пример, цикълът се постига чрез използване на цели числа от 1 до n, а изразът <= n се използва като критерий за спиране на по-нататъшното циклиране. По този начин можем да заключим, че същите резултати могат да бъдат постигнати чрез рекурсия и итерация. И двете обаче се основават на подходи, които са малко по-различни. Всеки рекурсивен алгоритъм може да бъде написан и с итерации (контури).
Сравнение между рекурсия и повторение:
рекурсия | Повторение | |
дефиниция | Рекурсията се отнася до рекурсивна функция, в която се нарича отново, за да повтори кода. | Итерацията се постига чрез итеративна функция, която се повтаря, за да се повтори част от кода. |
Важен момент | Необходимо е да се определи основен случай | Необходимо е да се определи условие за прекратяване |
производителност | Сравнително бавно | Сравнително бързо |
Използване на памет | Сравнително повече | Сравнително по-малко |
код | По-малък | Повече време |
Безкрайно повторение | Безкрайната рекурсия е способна да разбие системата | Безкрайните цикли многократно консумират процесорни цикли |
структура | селекция | повторение |
Локални променливи | Не е задължително | длъжен |