recursieve functies zijn functies die zich in hun definitie noemen . Omdat een recursieve functie roept zichzelf om zijn taak uit te voeren , kan het werk dat identiek werk op meerdere data objecten makkelijker bevatten te conceptualiseren , plannen en schrijven te maken . Echter , kunnen recursie worden systeem - intensieve of belanden overbelasting van het systeem als de recursie niet stopt . Schrijven recursieve functies in Python is vergelijkbaar met recursieve functies in andere programmeertalen , met dezelfde voordelen en valkuilen . Monster Recursion recursieve functies noemen zichzelf als onderdeel van hun definitie . Bijvoorbeeld : >>> def factor ( x ) : . . . factor ( x ) op Deze functie zal zich blijven bellen totdat het systeem niet meer kan houden van de hoeveelheid functie roept gemaakt ( functie gesprekken bevinden zich in het geheugen als alle andere gegevens ) . Echter, dit vereenvoudigt hoe een recursieve functies werkt conceptueel : Een functie ( factor ) noemt zichzelf ( factor ( x ) ) als onderdeel van de definitie Base Gevallen . Een recursieve functie moet hebben wat zou kunnen " base gevallen , " of voorwaarden die de functie vertellen om haar recursie stoppen worden genoemd . Dit kan een aandoening die de functie zou hebben voldaan als onderdeel van de operatie . Als een klassiek voorbeeld van de faculteit-functie vindt de faculteit van een getal n ( n! , of n * n- 1 * n - 2 ... 0 ) . Zodat de faculteit van 3 zou berekenen op 3 * 2 * 1 = 6 . Een programmeur zou het getal 0 als het basisscenario van deze functie te gebruiken : >>> als x == 0 : . . . terugkeren 1 Recursion Als de faculteit-functie heeft nu een base case ( x == 0 ) , dan is recursie stopt bij deze aandoening . >>> Anders : : zo , zou het slechts een kwestie van het gebruik van recursie aan de faculteit bewerking uit te voeren zijn. . . return x * factor ( x - 1 ) op Twitter Als x niet gelijk 0 , dan is de recursie zal beginnen /doorgaan . De return zal " factor " bellen en wachten . Elke nieuwe functie oproep zal hetzelfde doen , bellen en wachten tot de laatste functie oproep ( wanneer x == 0) geeft 1 . Dan zal elke eerdere oproep van de return statement ( vermenigvuldig de geretourneerde waarde van de " factor " door x ) Python Recursion Recursion in afmaken totdat de faculteit wordt geretourneerd . elke taal kan eindigen in een oneindige lus : dat is , een recursieve structuur die nooit eindigt totdat het systeem stopt het te wijten aan gebrek aan middelen . Python stopt deze " oneindige " recursie bij 1.000 oproepen ( dus een functie kan zelf bellen in een 1000 - instantie lange recursieve keten voordat Python stopt het proces ) . De programmeur kan deze waarde wijzigen via het systeem bibliotheken , zoals dit voorbeeld : >>> import sys >>> sys.setrecursionlimit ( 2000 ) op Twitter echter, op dat moment programmeurs kunnen zich afvragen of recursie is de beste oplossing voor het probleem .
|