Necesitatea repetării codului nu poate fi niciodată subestimată în căutarea soluțiilor la unele dintre cele mai mari probleme ale lumii. Ce trebuie să știți este că, în programare, repetarea ia una din cele două forme - iterație sau recursivitate.

Scopul de aici este să vă introducă repetarea în cod și să demonstrați cum poate fi folosit pentru a vă îmbunătăți programele Java.

Programele repetitive vă pot ajuta să rezolvați unele dintre cele mai dificile probleme de programare. Iată ce trebuie să știți pentru a crea programe recursive în Java.

Folosind iterație

Iterarea folosește o structură de buclă pentru a repeta codul. Cele trei tipuri de structuri iterative sunt pre-test loop (while), post-test loop (do-while) și buclă contracontrolată (pentru).

Aceste structuri iterative operează prin repetarea unui bloc de cod în timp ce rămâne o condiție specifică adevărat, dar de îndată ce această condiție devine falsă, bucla se oprește și programul revine la normal curgere.

De exemplu, am putea folosi una dintre structurile iterative pentru a rezolva problema sumei tuturor numerelor întregi de la 1 la n. În funcție de structura iterativă utilizată, soluția va lua o formă specifică, dar oricare dintre cele trei structuri iterative pot oferi o soluție pentru această problemă folosind următoarele pseudo cod.

instagram viewer

Exemplu de pseudocod de iterație


START
DECLEARE sumă, numărare ca număr întreg
sumă = 0
număr = 1
REPETA
Sumă = sumă + numărare
Număr = număr + 1
PÂNĂ la numărare> n
SFÂRȘIT

Pseudocodul de mai sus are două variabile, sumă și numărare, care sunt inițializate la 0 și respectiv 1. Variabila „count” este inițializată la 1 deoarece problema pe care încercăm să o rezolvăm afirmă că avem nevoie de suma tuturor numerelor întregi de la 1 la n.

Variabilei „n” i se va atribui un număr aleatoriu de la utilizator și variabila „numărare” va crește cu câte una când se efectuează o buclă, dar de îndată ce valoarea variabilei „count” o depășește pe cea a „n”, atunci bucla va fi Stop.

De ce să folosiți recursivitatea?

Dacă ar fi să examinăm faptele din jurul iterației și recursivității, vom găsi mai multe lucruri adevărate.

  • Ambele metode implică repetarea.
  • Ambele metode necesită o condiție de testare, care va indica când să se oprească.
  • Ambele metode se pot executa teoretic pentru totdeauna dacă o condiție de ieșire nu este dată sau îndeplinită.
  • Orice problemă care poate fi rezolvată folosind iterația poate fi, de asemenea, rezolvată folosind recursivitate și invers.

Deci, de ce am vrea să alegem o metodă în locul celeilalte? Răspunsul simplu este eficiența. Cu recursivitate, un programator poate folosi mai puțin cod pentru a obține ceea ce este în esență același rezultat. Mai puțin cod înseamnă că există o scădere semnificativă a posibilității ca erorile să treacă neobservate.

Recursiunea folosește mai multă memorie și este mai lentă decât iterația, dar are o stivă încorporată (structură de date). Cu iterație, va trebui să construiți o structură de date (în esență reinventând roata), lăsând programul deschis la o posibilitate mai mare de erori neprinse din cauza codului suplimentar.

Legate de: Excepții Java: Vă descurcați corect?

Cum funcționează recursivitatea

Recursivitatea este numele dat unui proces în care o funcție se apelează în mod repetat până când se îndeplinește o anumită condiție. Această metodă repetitivă rezolvă problemele descompunându-le în versiuni mai mici și mai simple ale lor.

Fiecare funcție recursivă constă din două părți - caz de bază și caz general.

Structura de bază a unei funcții recursive Exemplu


Funcţie(){
//caz de baza
// caz general
}

Cazul de bază este secțiunea funcției recursive care rezolvă problema. Deci, ori de câte ori funcția recursivă ajunge la cazul de bază, programul iese din funcția recursivă și continuă cu fluxul său natural.

Cazul general este secțiunea funcției recursive care este repetitivă. Aici funcția se numește singură și se face cea mai mare parte a muncii.

Utilizarea recursiunii în Java

Unele limbaje de programare acceptă doar iterația, în timp ce altele acceptă doar recursivitatea. Din fericire, Java este una dintre limbile care acceptă ambele metode repetitive.

În Java recursivitatea este utilizată în același mod în care este utilizată în orice alt limbaj care o acceptă. Cheia este să vă asigurați întotdeauna că funcția recursivă are atât o bază, cât și un caz general, în această ordine.

Să ne întoarcem la exemplul nostru de însumare inițială, scopul este să găsim suma tuturor numerelor întregi de la 1 la n, unde n este un număr întreg furnizat de utilizator.

Exemplu de recursiune Java


//functie recursiva
int Suma (int n) {
//caz de baza
dacă (n <= 1) {
retur 1;
}
// caz general
altceva {
returnează n + Sumă (n-1);
}
}

Funcția recursivă de mai sus ia un număr întreg „n” și își încheie execuția numai atunci când valoarea lui n este mai mică sau egală cu 1.

Dacă ar fi să trecem numărul întreg 5 la programul de mai sus, variabila „n” ar presupune valoarea 5. Valoarea „n” va fi apoi verificată în cazul de bază, dar având în vedere că 5 este mai mare decât 1 „n”, acum va fi transmisă cazului general.

În acest exemplu, cazul general va apela funcția recursivă de patru ori. La apelul de funcție finală, valoarea „n” va fi 1, îndeplinind efectiv cerințele cazului de bază, rezultând întreruperea funcției recursive și returnând 15.

Dacă schimbăm valoarea „n” la 7, funcția recursivă se va apela de șase ori și va reveni 28 înainte de a termina execuția.

Vrei să încerci singur? Puteți executa programul recursiv de mai sus utilizând următoarea linie de cod din funcția principală a programului dvs. Java.


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

Ce ai învățat

Dacă ați reușit să treceți prin acest articol întreg, acum aveți o înțelegere de bază a celor două metode repetitive care sunt utilizate în programare. Acum recunoașteți asemănările dintre iterație și recursivitate și de ce un dezvoltator ar alege să utilizeze recursivitatea peste iterație și cum să utilizeze o funcție recursivă în Java.

Credit de imagine: ThisIsEngineering /Pexels

E-mail
Ce este recursivitatea și cum o utilizați?

Aflați elementele de bază ale recursivității, instrumentul esențial, dar ușor de gândit pentru programatori.

Citiți în continuare

Subiecte asemănătoare
  • Programare
  • Java
Despre autor
Kadeisha Kean (7 articole publicate)

Kadeisha Kean este un dezvoltator de software complet și scriitor tehnic / tehnologic. Are abilitatea distinctă de a simplifica unele dintre cele mai complexe concepte tehnologice; producând materiale care pot fi înțelese cu ușurință de orice novice în tehnologie. Este pasionată de scriere, dezvoltarea de software-uri interesante și călătoria prin lume (prin documentare).

Mai multe de la Kadeisha Kean

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletterului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Încă un pas…!

Vă rugăm să confirmați adresa de e-mail în e-mailul pe care tocmai vi l-am trimis.

.