Кључна разлика: У програмирању се рекурзија може објаснити разматрањем рекурзивне функције. Рекурзивна функција је она која се поново позива да понови код. С друге стране, итерација се постиже итеративном функцијом која се понавља да би се поновио неки део кода.
У програмирању се рекурзија и итерација користе за постизање понављања. Они се односе на процес који се понавља више пута. Рекурзија се заснива на приступу у којем се нешто односи на себе док се не испуни услов. Речено је да је метода рекурзивна ако се може позвати директно или индиректно као -
{
... име () ...
}
или
воид наме ()
{
... игра () ...
}
воид гаме () {
... име () ...
}
За успешну рекурзију, треба имати на уму да сваки позив направљен у процесу рекурзије мора поједноставити рачунање. Рекурзија се постиже дефинисањем основног случаја.
инт фацториал (инт Н)
{
иф (Н == 0) ретурн 1;
иначе се врати (Н * факторијално (Н-1));
}
У овом примеру, рекурзија се лако може видети у изјави (Н * факторијал (Н-1)), где поново позива факторску функцију. Рекурзија је веома корисна јер помаже у скраћивању кода. Међутим, рекурзија је мало спора у перформансама.
функција фацториал (н)
{
вар лооп, ресулт;
ресулт = 1;
фор (лооп = 1; лооп <= н; лооп ++)
{
ресулт = ресулт * лооп;
}
повратни резултат;
}
У овом примеру, петља се постиже коришћењем целих бројева од 1 до н, а израз <= н се користи као критеријум за заустављање даље петље. Дакле, можемо закључити да се исти резултати могу постићи кориштењем рекурзије и итерације. Међутим, оба су заснована на приступима који су мало другачији. Било који рекурзивни алгоритам такође може бити написан коришћењем итерација (петљи).
Поређење између рекурзије и понављања:
Рекурзија | Итерација | |
Дефиниција | Рекурзија се односи на рекурзивну функцију у којој се поново позива да понови код. | Итерација се постиже итеративном функцијом која се понавља да би се поновио неки део кода. |
Важна тачка | Потребно је одредити основни случај | Потребно је одредити увјет прекида |
Перформансе | Цомпаративели слов | Компаративно брзо |
Употреба меморије | Компаративно више | Компаративно мање |
Код | Мањи | Дуже |
Бесконачно понављање | Бесконачна рекурзија је способна да руши систем | Бесконачна петља више пута троши циклусе процесора |
Структура | Селецтион | Понављање |
Локалне варијабле | Не тражи се | Потребан |