GeeksforGeeks (Dansk)

rekursion:
i programmeringsbetingelser kan en rekursiv funktion defineres som en rutine, der kalder sig direkte eller indirekte.
ved hjælp af rekursiv algoritme kan visse problemer løses ganske let. To .ers of Hanoi (TOH) er en sådan programmering øvelse. Prøv at skrive en iterativ algoritme til TOH. Desuden kan hvert rekursivt program skrives ved hjælp af iterative metoder (Se datastrukturer af Lipschut.).
matematisk rekursion hjælper med at løse få gåder nemt.,
for eksempel et rutinemæssigt intervie.spørgsmål,
i en part af N mennesker, hver person vil ryste hende/sin hånd med hinanden person kun .n gang. I alt hvor mange håndskakninger ville der ske?
løsning:
det kan løses på forskellige måder, grafer, rekursion osv. Lad os se, hvor rekursivt det kan løses.
der er n personer. Hver person ryste-hånd med hinanden kun .n gang. Overvejer N – th person, (s) han har til at ryste-hånd med (N-1) personer. Nu problemet reduceret til lille forekomst af (N-1) personer. Forudsat TN som samlede ryste-hænder, kan det formuleres rekursivt.,
TN = (N-1) + TN-1
løsning af det rekursivt giver en aritmetisk serie, som kan evalueres til N(N-1)/2.
øvelse: i et parti af N-par kan kun et køn (enten mand eller kvinde) ryste hånd med hver enkelt. Hvor mange rystehænder ville der ske?
normalt rekursive programmer resulterer i dårlige tid kompleksiteter. Et eksempel er Fibonacci-serien. Tiden kompleksitet beregning n-th Fibonacci nummer ved hjælp rekursion er cirka 1,6 n. det betyder, at den samme computer tager næsten 60% mere tid til næste Fibonacci nummer. Rekursiv Fibonacci algoritme har overlappede delproblemer., Der er andre teknikker som dynamisk programmering for at forbedre sådanne overlappede algoritmer.
men få algoritmer, (f.eks fusionere sortering, hurtig sortering, etc…) resulterer i optimal tid kompleksitet ved hjælp af rekursion.
Base Case:
Et kritisk krav til rekursive funktioner er terminering point eller base case. Hvert rekursivt program skal have base case for at sikre, at funktionen ophører. Manglende grundtilfælde resulterer i uventet adfærd.,
Forskellige Måder at Skrive Rekursive Funktioner
Funktion kalder sig selv: (Direkte)
de Fleste af os er klar over, atleast to forskellige måder at skrive rekursive programmer. Nedenfor er tårne af Hanoi kode. Det er et eksempel på direkte opkald.

Output:

Move the disk 1 from S to DMove the disk 2 from S to AMove the disk 1 from D to AMove the disk 3 from S to DMove the disk 1 from A to SMove the disk 2 from A to DMove the disk 1 from S to D

tidskompleksiteten af TOH kan beregnes ved at formulere antal bevægelser.
vi skal flytte de første N-1-diske fra kilde til hjælp og fra hjælp til Destination, dvs.de første N-1-diske kræver to bevægelser. Endnu en flytning af sidste disk fra kilde til Destination., Matematisk kan det defineres rekursivt.
MN = 2MN-1 + 1.
Vi kan nemt løse ovenstående rekursive forhold (2N-1), som er eksponentiel.
rekursion ved hjælp af gensidig funktionskald: (indirekte måde)
indirekte opkald. Selvom mindst pratical, kan en funktion kalde en anden funktion, som inturn kalder tidligere funktion. I dette tilfælde skal begge funktioner have basissagen.
defensiv programmering:
Vi kan kombinere defensive kodningsteknikker med rekursion for yndefuld funktionalitet af applikationen., Normalt rekursiv programmering er ikke tilladt i sikkerhedskritiske applikationer, såsom flyvekontrol, sundhedsovervågning osv. Man kan dog bruge en statisk tælleteknik for at undgå ukontrollerede opkald (ikke i sikkerhedskritiske systemer, kan bruges i bløde realtidssystemer).

callDepth dybde afhænger af funktion stack ramme størrelse og maksimal stack størrelse.
rekursion ved hjælp af funktionspegere: (indirekte måde)
rekursion kan også implementeres med funktionspegere. Et eksempel er signalhåndterer i posi. – klagesystemer., Hvis handleren forårsager at udløse samme begivenhed som følge af hvilken handleren bliver kaldt, funktionen vil genindtaste.

tak til Venki for at skrive ovenstående indlæg. Skriv venligst kommentarer, hvis du finder noget forkert, eller du vil dele mere information om emnet diskuteret ovenfor.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *