У потрази за решењима за неке од највећих проблема на свету никада се не може потценити потреба за понављањем кода. Оно што треба да знате је да у програмирању понављање има један од два облика - итерацију или рекурзију.
Циљ овде је да вас упозна са понављањем у коду и демонстрира како се он може користити за побољшање ваших Јава програма.
Понављајући програми могу вам помоћи да решите неке од најтежих програмских проблема. Ево шта треба да знате да бисте креирали рекурзивне програме на Јави.
Коришћење Итерације
Итерација користи структуру петље за понављање кода. Три врсте итеративних структура су петља пре теста (вхиле), петља пост теста (до-вхиле) и контра-контролисана петља (за).
Ове итеративне структуре делују понављањем блока кода док остаје специфичан услов тачно, али чим тај услов постане нетачан, петља се зауставља и програм се враћа у нормалу проток.
На пример, могли бисмо да запослимо једну од итеративних структура за решавање проблема збира свих целих бројева од 1 до н. У зависности од итеративне структуре која се користи, решење ће добити одређени облик, али било који од три итеративне структуре могу пружити решење за овај проблем користећи следеће псеудокод.
Пример понављања псеудокода
ПОЧЕТАК
ПРОИЗВОДИ збир, рачунај као цео број
сума = 0
цоунт = 1
ПОНАВЉАЊЕ
Збир = збир + број
Бројање = бројање + 1
ДО бројања> н
КРАЈ
Псеудокод изнад има две променљиве, сум и цоунт, које су иницијализоване на 0 односно 1. Варијабла „цоунт“ је иницијализована на 1, јер проблем који покушавамо да решимо наводи да нам је потребан збир свих целих бројева од 1 до н.
Променљивој „н“ ће корисник доделити насумични број, а променљивој „цоунт“ ће се повећати за по један време извођења петље, али чим вредност променљиве „цоунт“ премаши вредност „н“, петља ће зауставити.
Зашто користити рекурзију?
Ако бисмо испитали чињенице око итерације и рекурзије, открићемо неколико ствари које су тачне.
- Обе методе укључују понављање.
- Обе методе захтевају услов испитивања, који ће назначити када зауставити.
- Обе методе се теоретски могу извршавати заувек ако излазни услов није дат или испуњен.
- Било који проблем који се може решити помоћу итерације такође се може решити помоћу рекурзије и обрнуто.
Па зашто бисмо желели да одаберемо једну методу над другом? Једноставан одговор је ефикасност. Са рекурзијом, програмер може да користи мање кода да би постигао оно што је у основи исти резултат. Мање кода значи да постоји значајно смањење могућности да грешке остану непримећене.
Рекурзија користи више меморије и спорија је од итерације, али има уграђени стог (структура података). Са итерацијом бисте морали да направите структуру података (у основи измишљајући точак), остављајући свој програм отвореним за већу могућност неупадљивих грешака због додатног кода.
Повезан: Јава изузеци: Да ли се правилно носите са њима?
Како функционише рекурзија
Рекурзија је назив који се даје процесу у којем се функција непрестано позива док се не испуни одређени услов. Ова понављајућа метода решава проблеме тако што их дели на мање, једноставније верзије себе.
Свака рекурзивна функција састоји се од два дела - основног случаја и општег случаја.
Основна структура примера рекурзивне функције
Функција () {
//основни случај
// општи случај
}
Основни случај је одељак рекурзивне функције који решава проблем. Дакле, кад год рекурзивна функција дође у основни случај, програм излази из рекурзивне функције и наставља својим природним током.
Општи случај је одељак рекурзивне функције који се понавља. Овде се функција позива и тамо се обавља главнина посла.
Коришћење рекурзије у Јави
Неки програмски језици подржавају само итерацију, док други подржавају само рекурзију. Срећом, Јава је један од језика који подржавају обе понављајуће методе.
У Јави се рекурзија користи на приближно исти начин као што се користи у било ком другом језику који је подржава. Кључ је увек осигурати да ваша рекурзивна функција има и основни и општи случај, тим редоследом.
Вратимо се нашем почетном примеру сумирања, циљ је пронаћи збир свих целих бројева од 1 до н, где је н целобројни број који је доставио корисник.
Пример Јава рекурзије
// рекурзивна функција
инт Сум (инт н) {
//основни случај
ако (н <= 1) {
ретурн 1;
}
// општи случај
елсе {
ретурн н + Сум (н-1);
}
}
Горе наведена рекурзивна функција узима цео број „н“ и завршава његово извршавање само када је вредност н мања или једнака 1.
Ако бисмо цео број 5 проследили горе наведеном програму, променљива „н“ попримила би вредност 5. Вредност „н“ би се тада проверила у основном случају, али с обзиром да је 5 веће од 1 „н“, сада ће се проследити у општи случај.
У овом примеру, општи случај позваће рекурзивну функцију четири пута. На завршном позиву функције вредност „н“ биће 1, ефективно задовољавајући захтеве основног случаја што резултира прекидом рекурзивне функције и повратком 15.
Ако променимо вредност „н“ на 7, рекурзивна функција ће се позвати шест пута и вратити 28 пре окончања свог извршавања.
Да ли желите да пробате сами? Можете извршити рекурзивни програм горе користећи следећи ред кода у главној функцији вашег Јава програма.
Систем.оут.принтлн (Збир (7));
Шта сте научили
Ако сте прошли кроз читав овај чланак, сада имате основно разумевање две понављајуће методе које се користе у програмирању. Сада препознајете сличности између итерације и рекурзије и зашто би програмер одлучио да користи рекурзију преко итерације и како користити рекурзивну функцију у Јави.
Кредит за слику: ТхисИсЕнгинееринг /Пексела
Научите основе рекурзије, основног, али помало збуњујућег алата за програмере.
Прочитајте следеће
- Програмирање
- Јава
Кадеисха Кеан је програмер софтвера у пуном слогу и писац техничких / технолошких технологија. Она има изразиту способност да поједностави неке од најсложенијих технолошких концепата; производећи материјал који лако може разумети било који технолошки новак. Одушевљена је писањем, развојем занимљивог софтвера и путовањем по свету (кроз документарне филмове).
Претплатите се на наш билтен
Придружите се нашем билтену за техничке савете, прегледе, бесплатне е-књиге и ексклузивне понуде!
Још један корак…!
Молимо потврдите своју адресу е-поште у е-поруци коју смо вам управо послали.