Koodin toistamisen tarvetta ei voida koskaan aliarvioida etsittäessä ratkaisuja joihinkin maailman suurimpiin ongelmiin. Sinun on tiedettävä, että ohjelmoinnissa toisto tapahtuu kahdella tavalla - iteraatio tai rekursio.
Tavoitteena on esitellä toistoa koodissa ja osoittaa, kuinka sitä voidaan käyttää Java-ohjelmiesi parantamiseen.
Toistuvat ohjelmat voivat auttaa sinua ratkaisemaan vaikeimmat ohjelmointiongelmat. Tässä sinun on tiedettävä, jos haluat luoda rekursiivisia ohjelmia Java-käyttöjärjestelmässä.
Iteraation käyttäminen
Iteraatio käyttää silmukkarakennetta koodin toistamiseen. Kolme iteratiivisten rakenteiden tyyppiä ovat testin edeltävä silmukka (while), testin jälkeinen silmukka (do-while) ja laskuriohjattu silmukka (for).
Nämä iteratiiviset rakenteet toimivat toistamalla koodilohko tietyn ehdon ollessa jäljellä tosi, mutta heti kun ehto muuttuu vääräksi, silmukka pysähtyy ja ohjelma palaa normaaliksi virtaus.
Voisimme esimerkiksi käyttää yhtä iteratiivisista rakenteista kaikkien kokonaislukujen 1 - n summaan liittyvän ongelman ratkaisemiseksi. Käytetystä iteratiivisesta rakenteesta riippuen ratkaisu on tietyssä muodossa, mutta mikä tahansa kolme iteratiivista rakennetta voivat tarjota ratkaisun tähän ongelmaan seuraavalla tavalla pseudokoodi.
Esimerkki iteraation pseudokoodista
ALKAA
DECLEARE-summa, lasketaan kokonaislukuna
summa = 0
määrä = 1
TOISTAA
Summa = summa + määrä
Laskea = laskea + 1
KUN LASKE> n
LOPPU
Yllä olevassa pseudokoodissa on kaksi muuttujaa, summa ja määrä, jotka alustetaan vastaavasti 0: ksi ja 1: ksi. Muuttuja "count" alustetaan arvoon 1, koska ongelma, jota yritämme ratkaista, toteaa, että tarvitsemme kaikkien kokonaislukujen 1 - n summa.
Muuttujalle "n" annetaan satunnaisluku käyttäjältä ja "count" -muuttuja kasvaa yhdellä silmukka suoritetaan, mutta heti kun "count" -muuttujan arvo ylittää arvon "n", silmukka tulee lopettaa.
Miksi käyttää rekursiota?
Jos aiomme tutkia iterointia ja rekursiota koskevia tosiseikkoja, löydämme useita asioita totta.
- Molemmat menetelmät sisältävät toistamisen.
- Molemmat menetelmät edellyttävät testiolosuhteita, jotka ilmoittavat milloin lopettaa.
- Molemmat menetelmät voidaan teoreettisesti toteuttaa ikuisesti, jos poistumistietoa ei anneta tai täytetä.
- Kaikki iteroinnilla ratkaistavat ongelmat voidaan ratkaista myös rekursiolla ja päinvastoin.
Joten miksi haluamme valita yhden menetelmän toisen sijaan? Yksinkertainen vastaus on tehokkuus. Rekursiolla ohjelmoija voi käyttää vähemmän koodia saavuttaakseen olennaisesti saman tuloksen. Vähemmän koodia tarkoittaa, että virheiden mahdollisuus huomaamatta jää huomattavasti.
Rekursio käyttää enemmän muistia ja on hitaampaa kuin iterointi, mutta siinä on sisäänrakennettu pino (tietorakenne). Iteraation avulla joudut rakentamaan tietorakenteen (olennaisesti keksimään pyörän uudelleen), jolloin ohjelmallasi on suurempi mahdollisuus ylimääräisen koodin aiheuttamiin virheisiin.
Liittyvät: Java-poikkeukset: käsitteletkö heitä oikein?
Kuinka rekursio toimii
Rekursio on nimi, joka annetaan prosessille, jossa toiminto kutsuu itseään toistuvasti, kunnes tietty ehto täyttyy. Tämä toistuva menetelmä ratkaisee ongelmat jakamalla ne pienemmiksi, yksinkertaisemmiksi versioiksi itsestään.
Jokainen rekursiivinen toiminto koostuu kahdesta osasta - perustapauksesta ja yleisestä tapauksesta.
Rekursiivisen funktion perusrakenteen esimerkki
Funktio () {
//perustapaus
// yleinen tapaus
}
Perustapaus on rekursiivisen funktion osa, joka ratkaisee ongelman. Joten aina, kun rekursiivinen toiminto saapuu peruskoteloon, ohjelma poistuu rekursiivisesta toiminnosta ja jatkaa luonnollisella virtauksellaan.
Yleinen tapaus on rekursiivisen funktion osa, joka on toistuva. Tässä toiminto kutsuu itseään ja missä suurin osa työstä tehdään.
Recursionin käyttö Java-käyttöjärjestelmässä
Jotkut ohjelmointikielet tukevat vain iterointia, kun taas toiset vain rekursiota. Onneksi Java on yksi niistä kielistä, jotka tukevat molempia toistuvia menetelmiä.
Javassa rekursiota käytetään samalla tavalla kuin mitä tahansa muulla sitä tukevalla kielellä. Tärkeintä on aina varmistaa, että rekursiivisella funktiollasi on sekä perus- että yleistapaus siinä järjestyksessä.
Palataan takaisin alkuperäiseen summausesimerkkiin. Tavoitteena on löytää kaikkien kokonaislukujen 1 - n summa, jossa n on käyttäjän toimittama kokonaisluku.
Esimerkki Java-rekursiosta
// rekursiivinen toiminto
int summa (int n) {
//perustapaus
jos (n <= 1) {
paluu 1;
}
// yleinen tapaus
muu{
paluu n + summa (n-1);
}
}
Yllä oleva rekursiivinen funktio ottaa kokonaisluvun "n" ja lopettaa suorituksen vain, kun n: n arvo on pienempi tai yhtä suuri kuin 1.
Jos välitämme kokonaisluvun 5 yllä olevalle ohjelmalle, muuttuja "n" olettaa arvon 5. N: n arvo tarkistettaisiin sitten perustapauksessa, mutta kun otetaan huomioon, että 5 on suurempi kuin 1, n siirretään nyt yleiseen tapaukseen.
Tässä esimerkissä yleinen tapaus kutsuu rekursiivista toimintoa neljä kertaa. Viimeisen funktion kutsun yhteydessä n: n arvo on 1, joka vastaa tosiasiallisesti perustapauksen vaatimuksia, mikä johtaa rekursiivisen funktion lopettamiseen ja palauttamiseen 15.
Jos muutamme “n” -arvoksi 7, rekursiivinen funktio kutsuu itseään kuusi kertaa ja palaa 28 ennen sen suorittamisen lopettamista.
Haluatko kokeilla sitä itse? Voit suorittaa yllä olevan rekursiivisen ohjelman käyttämällä seuraavaa koodiriviä Java-ohjelmasi päätoiminnossa.
System.out.println (summa (7));
Mitä opit
Jos teit sen läpi tämän koko artikkelin, sinulla on nyt perustiedot kahdesta toistuvasta menetelmästä, joita käytetään ohjelmoinnissa. Tunnistat nyt iteroinnin ja rekursioiden yhtäläisyydet ja sen, miksi kehittäjä haluaa käyttää rekursiota iteraation yli, ja kuinka käyttää rekursiivista toimintoa Java-ohjelmassa.
Kuvahyvitys: ThisIsEngineering /Pexels
Opi rekursio, joka on ohjelmoijille välttämätön, mutta hieman mieltä taivuttava työkalu.
Lue seuraava
- Ohjelmointi
- Java
Kadeisha Kean on Full-Stack-ohjelmistokehittäjä ja tekninen / teknologinen kirjoittaja. Hänellä on selkeä kyky yksinkertaistaa joitain monimutkaisimpia teknisiä käsitteitä; tuottaa materiaalia, joka on helposti ymmärrettävissä kaikille tekniikan aloittelijoille. Hän on intohimoisesti kirjoittaminen, mielenkiintoisten ohjelmistojen kehittäminen ja matkustaminen ympäri maailmaa (dokumenttielokuvien kautta).
Tilaa uutiskirjeemme
Liity uutiskirjeeseemme, jossa on teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja erikoistarjouksia!
Vielä yksi askel !!!
Vahvista sähköpostiosoitteesi juuri lähettämässäsi sähköpostiviestissä.