Niekada negalima nuvertinti poreikio pakartoti kodą, ieškant kai kurių didžiausių pasaulio problemų sprendimo būdų. Ką reikia žinoti, yra tai, kad programuojant kartojimas įgyja vieną iš dviejų formų - iteraciją arba rekursiją.

Čia siekiama supažindinti jus su pakartojimu kode ir parodyti, kaip jį galima naudoti patobulinant jūsų „Java“ programas.

Pasikartojančios programos gali padėti išspręsti kai kurias sunkiausias programavimo problemas. Štai ką turite žinoti, kad sukurtumėte rekursines programas „Java“.

Naudojant iteraciją

Iteracija naudoja ciklo struktūrą kodui pakartoti. Trys iteracinių struktūrų tipai yra išankstinio testo ciklas (while), po testo ciklas (do-while) ir valdoma kilpa (skirta).

Šios iteracinės struktūros veikia kartodami kodo bloką, kol lieka konkreti sąlyga tiesa, bet kai tik ši sąlyga tampa klaidinga, ciklas sustoja ir programa grįžta į normalią būseną tekėti.

Pavyzdžiui, mes galime naudoti vieną iš pasikartojančių struktūrų, kad išspręstume visų skaičių nuo 1 iki n sumos problemą. Priklausomai nuo naudojamos iteracinės struktūros, sprendimas įgaus konkrečią formą, tačiau bet kuri iš trys iteracinės struktūros gali pateikti šios problemos sprendimą naudodamiesi toliau pateiktais būdais pseudokodas.

instagram viewer

Iteracijos pseudokodo pavyzdys


PRADĖTI
DECLEARE suma, skaičiuojama kaip sveikasis skaičius
suma = 0
skaičius = 1
Pakartokite
Suma = suma + skaičius
Suskaičiuoti = suskaičiuoti + 1
IKI skaičiaus> n
GALAS

Aukščiau pateiktame pseudokode yra du kintamieji, suma ir skaičius, kurie inicijuojami atitinkamai 0 ir 1. „Count“ kintamasis inicijuojamas į 1, nes problema, kurią bandome išspręsti, nurodo, kad mums reikia visų sveikųjų skaičių nuo 1 iki n sumos.

Kintamajam „n“ bus suteiktas vartotojo atsitiktinis skaičius, o „count“ kintamasis padidės po vieną laiko ciklas yra atliekamas, bet kai tik „count“ kintamojo vertė viršija „n“ reikšmę, ciklas tai padarys sustabdyti.

Kodėl verta naudoti rekursiją?

Jei išnagrinėsime faktus, susijusius su kartojimu ir rekursija, rasime kelis dalykus, kurie yra teisingi.

  • Abu metodai apima pakartojimą.
  • Abiems metodams reikalinga bandymo sąlyga, kuri nurodys, kada reikia sustoti.
  • Abu metodai teoriškai gali būti vykdomi amžinai, jei nėra nurodoma ar įvykdoma išėjimo sąlyga.
  • Bet kuri problema, kurią galima išspręsti naudojant iteraciją, taip pat gali būti išspręsta naudojant rekursiją ir atvirkščiai.

Tad kodėl mes norėtume pasirinkti vieną metodą, o ne kitą? Paprastas atsakymas yra efektyvumas. Su rekursija programuotojas gali naudoti mažiau kodo, kad pasiektų tai, kas iš esmės yra tas pats rezultatas. Mažiau kodo reiškia, kad žymiai sumažėja klaidų nepastebėjimo galimybė.

Rekursija naudoja daugiau atminties ir yra lėtesnė nei kartojimas, tačiau turi įmontuotą kaminą (duomenų struktūrą). Turėdami iteraciją, turėtumėte sukurti duomenų struktūrą (iš esmės iš naujo išradę ratą), palikdami savo programą atviresnę, kad padidėtų galimybė užfiksuoti klaidų dėl papildomo kodo.

Susijęs: „Java“ išimtys: ar teisingai elgiatės su jomis?

Kaip veikia rekursija

Rekursija yra pavadinimas, suteiktas procesui, kai funkcija pakartotinai vadina save, kol įvykdoma konkreti sąlyga. Šis pasikartojantis metodas išsprendžia problemas, suskirstydamas jas į mažesnes, paprastesnes savo versijas.

Kiekviena rekursinė funkcija susideda iš dviejų dalių - pagrindinio ir bendro atvejo.

Pagrindinė rekursinės funkcijos pavyzdžio struktūra


Funkcija(){
// pagrindinis atvejis
// bendrasis atvejis
}

Pagrindinis atvejis yra rekursinės funkcijos skyrius, kuris išsprendžia problemą. Taigi, kai tik rekursinė funkcija pasiekia pagrindinį atvejį, programa išeina iš rekursinės funkcijos ir tęsia savo natūralų srautą.

Bendras atvejis yra rekursinės funkcijos skyrius, kuris pasikartoja. Čia funkcija pati save vadina ir ten atliekama didžioji darbo dalis.

„Recursion“ naudojimas „Java“

Kai kurios programavimo kalbos palaiko tik iteraciją, o kitos - tik rekursiją. Laimei, „Java“ yra viena iš kalbų, palaikančių abu pasikartojančius metodus.

„Java“ rekursija naudojama panašiai kaip ir bet kuria kita ją palaikančia kalba. Svarbiausia visada užtikrinti, kad jūsų rekursinė funkcija būtų ir pagrindine, ir bendrąja tvarka tokia tvarka.

Grįžkime prie pradinio sumavimo pavyzdžio, kurio tikslas yra surasti visų sveikųjų skaičių nuo 1 iki n sumą, kur n yra sveiko skaičiaus, kurį pateikia vartotojas.

„Java“ rekursijos pavyzdys


// rekursinė funkcija
int suma (int n) {
// pagrindinis atvejis
jei (n <= 1) {
grąžinti 1;
}
// bendrasis atvejis
Kitas{
grąža n + suma (n-1);
}
}

Aukščiau pateikta rekursinė funkcija užima sveiką skaičių „n“ ir nutraukia jos vykdymą tik tada, kai n reikšmė yra mažesnė arba lygi 1.

Jei aukščiau esančiai programai perduotume skaičių 5, kintamasis „n“ prisiimtų 5 reikšmę. Tada „n“ reikšmė būtų patikrinta pagrindiniu atveju, tačiau atsižvelgiant į tai, kad 5 yra didesnis nei 1, „n“ dabar bus perduodama bendram atvejui.

Šiame pavyzdyje bendras atvejis rekursinę funkciją iškvies keturis kartus. Paskutinės funkcijos iškvietimo metu „n“ reikšmė bus 1, kuri faktiškai atitiks pagrindinio atvejo reikalavimus, todėl rekursinė funkcija bus nutraukta ir bus grąžinta 15.

Jei pakeisime „n“ reikšmę į 7, rekursinė funkcija paskambins šešis kartus ir grąžins 28 prieš nutraukdama jos vykdymą.

Norite išbandyti patys? Aukščiau pateiktą rekursinę programą galite vykdyti naudodami šią kodo eilutę pagrindinėje „Java“ programos funkcijoje.


System.out.println (suma (7));

Ką sužinojai

Jei tai padarėte per šį straipsnį, dabar turite pagrindinį supratimą apie du pasikartojančius metodus, kurie naudojami programuojant. Dabar jūs suprantate iteracijos ir rekursijos panašumus ir tai, kodėl kūrėjas pasirinktų rekursiją naudoti per iteraciją ir kaip naudoti rekursinę funkciją „Java“.

Vaizdo kreditas: ThisIsEngineering /Pekseliai

El
Kas yra rekursija ir kaip ją naudojate?

Sužinokite apie rekurso pagrindus - tai yra esminis, bet šiek tiek protą lenkiantis įrankis programuotojams.

Skaitykite toliau

Susijusios temos
  • Programavimas
  • „Java“
Apie autorių
Kadeisha Kean (Paskelbti 7 straipsniai)

Kadeisha Kean yra „Full Stack“ programinės įrangos kūrėja ir technikos / technologijų rašytoja. Ji turi aiškų sugebėjimą supaprastinti kai kurias sudėtingiausias technologines sąvokas; gamina medžiagą, kurią lengvai supranta bet kuris naujokas technologija. Ji aistringai rašo, kuria įdomią programinę įrangą ir keliauja po pasaulį (per dokumentinius filmus).

Daugiau iš Kadeisha Kean

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kuriame rasite techninių patarimų, apžvalgų, nemokamų el. Knygų ir išskirtinių pasiūlymų!

Dar vienas žingsnis…!

Prašome patvirtinti savo el. Pašto adresą el. Laiške, kurį jums ką tik išsiuntėme.

.