Anvendelser for en rekursiv funktion

November 27

Rekursion kan være en nyttig teknik til programmører. Rekursive funktioner, undertiden kendt som "metoder" i sprog som Java, er funktioner, der kalder sig selv. Der er visse situationer, hvor rekursive funktioner er særligt egnede. Det kan imidlertid være vanskeligt at gennemføre en rekursiv funktion korrekt, så de bør kun anvendes, hvor det er relevant. Rekursive funktioner er ofte nyttigt ved håndtering af datastrukturer og matematiske aktiviteter.

Sortering

Når programmer model data, enten internt eller importeret fra en kilde, såsom en database, de ofte nødt til at sortere det. Nogle datastrukturer ikke skal bestilles, hvilket betyder, at elementerne ikke er anbragt i rækkefølge. For eksempel kunne et program indeholde et array med tekststrenge inde i det. For at sortere array, så tekststrenge er arrangeret i stigende orden alfabetisk, kan programmet bruge en algoritme. Mergesort er et eksempel på en rekursiv metode til denne proces. Mergesort værker ved løbende at dividere array i to, sortering hver halvdel før fusionere dem tilbage til én.

Søger

Når programmer gemme data i datastrukturer, de ofte har brug for at finde bestemte elementer ved hjælp af søge-algoritmer, som kan drage fordel af rekursion. For eksempel, hvis en array er lagring af værdier i alfabetisk rækkefølge, kan programmet bruge rekursion til at regne ud, hvad position et vist element er på. Binær søgning involverer programmet løbende kontrol et element midtvejs i arrayet. Hvis elementet matcher ene programmet søger, kan det stoppe. Hvis det ikke er det pågældende element, kan algoritmen kontrollere, om den er større eller mindre end den søgning element. Hvis den er større, kan algoritmen eliminere den øverste halvdel af strukturen ud over det aktuelle element, som søgningen elementet skal være i den nedre halvdel. Denne proces fortsætter, indtil elementet er placeret.

datastrukturer

Når det besluttes algoritmer, bør programmører spørge, om en iterativ funktion, der ikke rekursiv kunne løse opgaven samt en rekursiv en. For eksempel i visse datastrukturer, vil et program nødvendigt at gennemsøge lineært indtil det lokaliserer et søgeelement. I dette tilfælde er der intet alternativ til gentage gennem strukturen. Rekursive algoritmer forenkler opgaven med hver iteration, kontrol for at se, om slutpunktet er ankommet, så at kalde funktionen igen, hvis det ikke har. For at demonstrere lighederne mellem rekursion og iteration, følgende prøve Java metode viser en rekursiv metode skitse:
public void processNumber (int myNum) {
if (myNum> 100) tilbagevenden;
ellers processNumber (myNum * 5);
}

En alternativ iterativ gennemførelse af dette ville være som følger:
int Anum = 3;
mens (Anum <100) {Anum * = 5; }

I dette tilfælde den iterative version er enklere.

Matematiske Opgaver

Nogle matematiske behandlings opgaver er særligt velegnede til rekursive funktioner. Fibonacci-sekvenser demonstrere rekursive bearbejdning. Hvert nummer i en Fibonacci sekvens er summen af ​​de to foregående. Følgende prøve Java-kode viser en funktion til at finde en Fibonacci nummer:
offentlig int getFibonacci (int fNum) {
if (fNum <= 1) returnerer fNum;
ellers returnerer getFibonacci (fNum-1) + getFibonacci (fNum-2);

}

Fremgangsmåden returnerer antallet i Fibonacci sekvens ved positionen angivet med et heltal parameter, når koden kalder det, som følger:
getFibonacci (8);

Dette ville returnere den ottende nummer. (Se Referencer 3, 4, 5)


relaterede artikler