Recursion kan een nuttige techniek voor programmeurs zijn. Recursieve functies , ook wel bekend als "methoden" in talen zoals Java , zijn functies die zichzelf noemen . Er zijn situaties waarin recursieve functies zijn bijzonder geschikt . Toch kan het moeilijk zijn om een recursieve functie correct uit te voeren , zodat ze moeten alleen waar nodig worden gebruikt . Recursieve functies zijn vaak nuttig bij het omgaan met data structuren en wiskundige activiteiten . Sorteren Wanneer programma model gegevens , hetzij intern of van een bron zoals een database geïmporteerd , vaak moeten ze het uitzoeken . Sommige data structuren zijn niet besteld , wat betekent dat elementen zijn niet gerangschikt in een opeenvolgende orde . Bijvoorbeeld kan een programma een array met tekenreeksen erin bevatten . Aan de array , zodat de tekenreeksen zijn gerangschikt in oplopende volgorde alfabetisch te sorteren , kan het programma nodig om een algoritme te gebruiken . Merge sort is een voorbeeld van een iteratieve methode voor dit proces . Merge sort werkt door voortdurend het verdelen van de matrix in twee -, sorteer elke helft voordat het samenvoegen hen terug in een. Searching Wanneer programma's slaan gegevens in datastructuren , ze vaak moeten bepaalde elementen met behulp van het zoeken algoritmen , die kunnen profiteren van recursie lokaliseren . Bijvoorbeeld, als een array opslaat waarden in alfabetische volgorde , het programma kan recursie gebruiken om erachter te komen wat de positie van een bepaald element is op . Binary search houdt het programma continu controleren van een element halverwege de array . Als het element overeenkomt met het ene het programma zoekt , kan stoppen . Als het niet het betreffende element , kan het algoritme controleren of deze groter of kleiner dan het zoeken element . Als deze groter is , kan het algoritme de bovenste helft van de structuur na het huidige element elimineren , het zoeken moet in een in de onderste helft . Dit proces gaat door totdat het element zich bevindt . Datastructuren Bij de beslissing over algoritmen , moeten programmeurs vragen of een iteratieve functie die niet recursieve kon oplossen wordt de taak als een recursieve een . Bijvoorbeeld , in bepaalde datastructuren , een programma nodig doorzocht worden in lineair totdat het lokaliseert een zoekterm . In dit geval is er geen alternatief , maar om te schakelen door de structuur . Recursieve algoritmen vereenvoudigen de taak bij elke iteratie , controleren om te zien of het eindpunt is aangekomen , dan is het aanroepen van de functie opnieuw als het niet . Om de overeenkomsten tussen recursie en iteratie demonstreren , de volgende voorbeeld Java-methode toont een iteratieve methode overzicht : public void processNumber ( int myNum ) { if ( myNum > 100 ) return ; anders processNumber ( myNum * 5 ) ; } Een alternatieve iteratieve implementatie hiervan zou zijn als volgt : . int Anum = 3 , terwijl ( Anum < 100 ) { Anum * = 5 ; } In dit geval is de iteratieve versie is eenvoudiger < br > taken wiskundige Sommige wiskundige bewerking taken zijn bijzonder goed geschikt voor recursieve functies . Fibonacci sequenties tonen recursieve verwerking . Elk nummer in een Fibonacci-reeks is de som van de twee voorgaande . Het volgende voorbeeld Java- code demonstreert een functie om een Fibonacci getal te vinden : public int getFibonacci ( int fNum ) { if ( fNum < = 1 ) return fNum ; anders return getFibonacci ( fNum - 1 ) + getFibonacci ( fNum - 2 ) ; } < br > de methode retourneert het getal in de Fibonacci-reeks op de positie aangegeven door een integer parameter als de code het noemt , als volgt : getFibonacci ( 8 ) ; Dit zou het achtste nummer terug . ( Zie referenties 3 , 4 , 5 ) op Twitter
|