Nøkkelforskjell - Rekursjon vs Iterasjon
Rekursjon og Iterasjon kan brukes til å løse programmeringsproblemer. Tilnærmingen til å løse problemet ved hjelp av rekursjon eller iterasjon avhenger av måten å løse problemet på. Hovedforskjellen mellom rekursjon og iterasjon er at rekursjon er en mekanisme for å kalle en funksjon innenfor samme funksjon mens iterasjon er å utføre et sett med instruksjoner gjentatte ganger til den gitte tilstanden er oppfylt. Rekursjon og Iterasjon er viktige teknikker for å utvikle algoritmer og bygge programvareapplikasjoner.
INNHOLD
1. Oversikt og nøkkelforskjell
2. Hva er rekursjon
3. Hva er iterasjon
4. Likheter mellom rekursjon og iterasjon
5. Sammenligning side om side - Rekursjon vs itering i tabellform
6. Sammendrag
Hva er rekursjon?
Når en funksjon kaller seg innenfor funksjonen, er den kjent som Rekursjon. Det er to typer rekursjon. De er endelig rekursjon og uendelig rekursjon. Endelig rekursjon har en avsluttende tilstand. Uendelig rekursjon har ikke en avsluttende tilstand.
Rekursjon kan forklares ved hjelp av programmet for å beregne fakta.
n! = n * (n-1) !, hvis n> 0
n! = 1, hvis n = 0;
Henvis til nedenfor-koden for å beregne faktoren på 3 (3! = 3 * 2 * 1).
intmain () {
int-verdi = faktor (3);
printf ("Faktor er% d / n", verdi);
retur 0;
}
intakt (intn) {
hvis (n == 0) {
retur 1;
}
annet {
retur n * faktor (n-1);
}
}
Når du ringer til faktor (3), vil den funksjonen kalle faktor (2). Når du ringer til faktor (2), vil den funksjonen kalle faktor (1). Da vil faktor (1) kalle faktor (0). factorial (0) vil returnere 1. I det ovennevnte programmet er n == 0 betingelse i “if block” grunntilstanden. I følge Likewise kalles faktorfunksjonen igjen og igjen.
Rekursive funksjoner er relatert til stakken. I C kan hovedprogrammet ha mange funksjoner. Så, main () er anropsfunksjonen, og funksjonen som kalles av hovedprogrammet er den kallte funksjonen. Når funksjonen kalles, blir kontrollen gitt til den kallte funksjonen. Etter at funksjonen er fullført, blir kontrollen returnert til hoved. Så fortsetter hovedprogrammet. Så det oppretter en aktiveringspost eller en stabelramme for å fortsette kjøringen.
Figur 01: Rekursjon
I det ovennevnte programmet oppretter det en aktiveringsregistrering i anropsstakken når du ringer til faktoriell (3) fra hoved. Deretter opprettes faktoriell (2) stabelramme på toppen av bunken og så videre. Aktiveringsposten holder informasjon om lokale variabler osv. Hver gang funksjonen kalles, opprettes et nytt sett med lokale variabler øverst i bunken. Disse rammene kan redusere hastigheten. Likeledes i rekursjon kaller en funksjon seg selv. Tidskompleksitet for en rekursiv funksjon blir funnet ved antall ganger, funksjonen kalles. Tidskompleksitet for en funksjonsanrop er O (1). For n antall rekursive samtaler er tidskompleksiteten O (n).
Hva er Iterasjon?
Iterasjon er en blokk med instruksjoner som gjentas igjen og igjen til den gitte tilstanden er sann. Iterasjon kan oppnås ved å bruke "for loop", "do-while loop" eller "while loop". "For loop" syntaksen er som følger.
for (initialisering; tilstand; endre) {
// uttalelser;
}
Figur 02: “for sløyfediagram”
Initialiseringstrinnet utføres først. Dette trinnet er å erklære og initialisere loopkontrollvariabler. Hvis tilstanden er oppfylt, utføres påstandene i krøllene. Disse uttalelsene utføres til tilstanden er oppfylt. Hvis tilstanden er falsk, går kontrollen til neste setning etter "for loop". Etter å ha utført uttalelsene inne i løkken, går kontrollen til å endre seksjonen. Det er å oppdatere loop-kontrollvariabelen. Deretter blir tilstanden sjekket igjen. Hvis tilstanden er oppfylt, vil utsagnene i de krøllete selene utføres. På denne måten gjentas "for loop".
I "while loop" utføres utsagnene i loop til tilstanden er oppfylt.
mens (tilstand) {
// uttalelser
}
I "gjør-mens" -sløyfe blir tilstanden sjekket på slutten av sløyfen. Så løkken utføres minst en gang.
gjøre{
// uttalelser
} mens (tilstand)
Programmet for å finne faktoren til 3 (3!) Ved hjelp av iterasjon ("for loop") er som følger.
int main () {
intn = 3, faktor = 1;
inti;
for (i = 1; i <= n; i ++) {
faktoria = faktoria * i;
}
printf (“Faktor er% d / n”, faktor);
retur 0;
}
Hva er likhetene mellom rekursjon og iterasjon?
- Begge er teknikker for å løse et problem.
- Oppgaven kan løses enten i rekursjon eller iterasjon.
Hva er forskjellen mellom rekursjon og iterasjon?
Diff Article Midt før tabell
Rekursjon vs Iterasjon |
|
Rekursjon er en metode for å kalle en funksjon innenfor samme funksjon. | Iterasjon er en blokk med instruksjoner som gjentas til den gitte tilstanden er oppfylt. |
Romkompleksitet | |
Plasskompleksiteten til rekursive programmer er høyere enn gjentakelser. | Romkompleksitet er lavere i iterasjoner. |
Hastighet | |
Rekursjonskjøring er treg. | Normalt er iterasjon raskere enn rekursjon. |
Betingelse | |
Hvis det ikke er noen avslutningsbetingelser, kan det være en uendelig rekursjon. | Hvis tilstanden aldri blir falsk, vil det være en uendelig iterasjon. |
Stable | |
I rekursjon brukes stakken til å lagre lokale variabler når funksjonen kalles. | I en iterasjon brukes ikke stakken. |
Kodelesbarhet | |
Et rekursivt program er mer lesbart. | Det iterative programmet er vanskeligere å lese enn et rekursivt program. |
Sammendrag - Rekursjon vs Iterasjon
Denne artikkelen diskuterte forskjellen mellom rekursjon og iterasjon. Begge kan brukes til å løse programmeringsproblemer. Forskjellen mellom rekursjon og iterasjon er at rekursjon er en mekanisme for å kalle en funksjon innenfor samme funksjon og iterasjon for å utføre et sett med instruksjoner gjentatte ganger til den gitte tilstanden er oppfylt. Hvis et problem kan løses i rekursiv form, kan det også løses ved hjelp av iterasjoner.
Last ned PDF-versjonen av Recursion vs Iteration
Du kan laste ned PDF-versjonen av denne artikkelen og bruke den til frakoblede formål som angitt i en henvisning. Vennligst last ned PDF-versjon her Forskjellen mellom rekursjon og iterasjon