Potreba za ponavljanjem koda nikada se ne može podcijeniti u potrazi za rješenjima nekih od najvećih svjetskih problema. Ono što trebate znati je da u programiranju ponavljanje ima jedan od dva oblika - iteraciju ili rekurziju.
Cilj je ovdje upoznati vas s ponavljanjem u kodu i pokazati kako se on može koristiti za poboljšanje vaših Java programa.
Ponavljajući programi mogu vam pomoći u rješavanju nekih od najtežih programskih problema. Evo što trebate znati za stvaranje rekurzivnih programa na Javi.
Upotreba iteracije
Iteracija koristi strukturu petlje za ponavljanje koda. Tri su vrste iterativnih struktura petlja prije testa (while), petlja post testa (do-while) i kontra-kontrolirana petlja (za).
Te iterativne strukture djeluju ponavljanjem bloka koda dok ostaje određeni uvjet true, ali čim to stanje postane netačno, petlja se zaustavlja i program se vraća u normalu teći.
Na primjer, mogli bismo upotrijebiti jednu od iterativnih struktura za rješavanje problema zbroja svih cijelih brojeva od 1 do n. Ovisno o iterativnoj strukturi koja se koristi, rješenje će poprimiti određeni oblik, ali bilo koji od tri iterativne strukture mogu pružiti rješenje za ovaj problem koristeći sljedeće pseudokod.
Primjer pseudokoda za ponavljanje
POČETAK
DEKLERIRAJ zbroj, računaj kao cijeli broj
zbroj = 0
broj = 1
PONOVITI
Zbroj = zbroj + brojanje
Brojanje = brojanje + 1
DO brojanja> n
KRAJ
Gore navedeni pseudokod ima dvije varijable, zbroj i brojanje, koje su inicijalizirane na 0 odnosno 1. Varijabla "count" inicijalizira se na 1 jer problem koji pokušavamo riješiti navodi da nam treba zbroj svih cijelih brojeva od 1 do n.
Varijabli "n" dodijelit će se slučajni broj od korisnika, a varijabla "count" će se povećati za svaku vrijeme izvođenja petlje, ali čim vrijednost varijable "count" premaši vrijednost "n", petlja će Stop.
Zašto koristiti rekurziju?
Ako bismo ispitali činjenice oko iteracije i rekurzije, naći ćemo nekoliko stvari koje su istinite.
- Obje metode uključuju ponavljanje.
- Obje metode zahtijevaju ispitni uvjet koji će naznačiti kada zaustaviti.
- Obje metode teoretski se mogu izvršavati zauvijek ako izlazni uvjet nije zadan ili je zadovoljen.
- Bilo koji problem koji se može riješiti iteracijom može se riješiti i rekurzijom i obrnuto.
Pa zašto bismo htjeli odabrati jednu metodu umjesto druge? Jednostavan odgovor je učinkovitost. S rekurzijom programer može koristiti manje koda da bi postigao ono što je u osnovi isti rezultat. Manje koda znači da postoji značajno smanjenje mogućnosti pogrešaka koje ostaju neprimijećene.
Rekurzija koristi više memorije i sporija je od iteracije, ali ima ugrađeni stog (struktura podataka). S iteracijom biste trebali izgraditi strukturu podataka (u osnovi izmišljajući kotačić), ostavljajući svoj program otvorenim za veću mogućnost neovlaštenih pogrešaka zbog dodatnog koda.
Povezano: Iznimke Java: Obrađujete li ih ispravno?
Kako djeluje rekurzija
Rekurzija je naziv koji se daje procesu u kojem se funkcija opetovano poziva dok se ne ispuni određeni uvjet. Ova ponavljajuća metoda rješava probleme raščlanjujući ih na manje, jednostavnije verzije sebe.
Svaka rekurzivna funkcija sastoji se od dva dijela - osnovnog slučaja i općeg slučaja.
Osnovna struktura primjera rekurzivne funkcije
Funkcija(){
// osnovni slučaj
// opći slučaj
}
Osnovni slučaj je odjeljak rekurzivne funkcije koji rješava problem. Dakle, kad god rekurzivna funkcija dođe u osnovni slučaj, program izlazi iz rekurzivne funkcije i nastavlja svojim prirodnim protokom.
Općeniti je slučaj odjeljak rekurzivne funkcije koji se ponavlja. Ovo je mjesto gdje se funkcija poziva i tamo se obavlja glavnina posla.
Korištenje rekurzije u Javi
Neki programski jezici podržavaju samo iteraciju, dok drugi podržavaju samo rekurziju. Srećom, Java je jedan od jezika koji podržava obje repetitivne metode.
U Javi se rekurzija koristi na približno isti način kao što se koristi u bilo kojem drugom jeziku koji je podržava. Ključ je uvijek osigurati da vaša rekurzivna funkcija ima i osnovni i opći slučaj tim redoslijedom.
Vratimo se našem početnom primjeru zbrajanja, cilj je pronaći zbroj svih cijelih brojeva od 1 do n, gdje je n cjelobrojni broj koji je dostavio korisnik.
Primjer Java rekurzije
// rekurzivna funkcija
int zbroj (int n) {
// osnovni slučaj
ako (n <= 1) {
povratak 1;
}
// opći slučaj
drugo{
povrat n + zbroj (n-1);
}
}
Gornja rekurzivna funkcija uzima cijeli broj "n" i završava njegovo izvršavanje samo kada je vrijednost n manja ili jednaka 1.
Ako bismo gornji program proslijedili cijeli broj 5, varijabla "n" poprimila bi vrijednost 5. Vrijednost "n" tada bi se provjerila u osnovnom slučaju, ali s obzirom da je 5 veće od 1 "n" sada će se proslijediti u opći slučaj.
U ovom će primjeru opći slučaj četiri puta pozvati rekurzivnu funkciju. Na zadnjem pozivu funkcije vrijednost "n" bit će 1, učinkovito zadovoljavajući zahtjeve osnovnog slučaja što rezultira prekidom rekurzivne funkcije i povratkom 15.
Ako promijenimo vrijednost "n" na 7, rekurzivna funkcija pozvat će se šest puta i vratiti 28 prije prekida izvršenja.
Želite li probati i sami? Gore navedeni rekurzivni program možete izvršiti pomoću sljedećeg retka koda u glavnoj funkciji vašeg Java programa.
System.out.println (Zbir (7));
Što ste naučili
Ako ste prošli cijeli ovaj članak, sada imate osnovno razumijevanje dviju ponavljajućih metoda koje se koriste u programiranju. Sada prepoznajete sličnosti između iteracije i rekurzije i zašto bi programer odlučio koristiti rekurziju nad iteracijom i kako koristiti rekurzivnu funkciju u Javi.
Kredit za sliku: ThisIsEngineering /Pekseli
Naučite osnove rekurzije, osnovnog, ali pomalo zbunjujućeg alata za programere.
Pročitajte Dalje
- Programiranje
- Java
Kadeisha Kean je programerica softvera u cijeloj tehnologiji i pisac tehničkih / tehnoloških tehnologija. Ona ima izrazitu sposobnost pojednostavljivanja nekih od najsloženijih tehnoloških koncepata; proizvodeći materijal koji lako može razumjeti bilo koji tehnološki novak. Zaljubljena je u pisanje, razvoj zanimljivog softvera i putovanja svijetom (kroz dokumentarne filmove).
Pretplatite se na naše obavijesti
Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!
Još jedan korak…!
Potvrdite svoju e-adresu u e-pošti koju smo vam upravo poslali.