Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python-recursie

Python-recursie

In deze tutorial leer je een recursieve functie te maken (een functie die zichzelf aanroept).

Wat is recursie?

Recursie is het proces van het definiëren van iets in termen van zichzelf.

Een voorbeeld uit de fysieke wereld zou zijn om twee parallelle spiegels tegenover elkaar te plaatsen. Elk object daartussen zou recursief worden gereflecteerd.


Python recursieve functie

In Python weten we dat een functie andere functies kan aanroepen. Het is zelfs mogelijk dat de functie zichzelf aanroept. Dit soort constructies worden recursieve functies genoemd.

De volgende afbeelding toont de werking van een recursieve functie genaamd recurse .

Hieronder volgt een voorbeeld van een recursieve functie om de faculteit van een geheel getal te vinden.

Faculteit van een getal is het product van alle gehele getallen van 1 tot dat getal. De faculteit van 6 (aangeduid als 6!) is bijvoorbeeld 1*2*3*4*5*6 =720 .

Voorbeeld van een recursieve functie

def factorial(x):
    """This is a recursive function
    to find the factorial of an integer"""

    if x == 1:
        return 1
    else:
        return (x * factorial(x-1))


num = 3
print("The factorial of", num, "is", factorial(num))

Uitvoer

The factorial of 3 is 6

In het bovenstaande voorbeeld, factorial() is een recursieve functie zoals het zichzelf noemt.

Wanneer we deze functie aanroepen met een positief geheel getal, zal deze zichzelf recursief aanroepen door het getal te verlagen.

Elke functie vermenigvuldigt het getal met de faculteit van het getal eronder totdat het gelijk is aan één. Deze recursieve oproep kan in de volgende stappen worden uitgelegd.

factorial(3)          # 1st call with 3
3 * factorial(2)      # 2nd call with 2
3 * 2 * factorial(1)  # 3rd call with 1
3 * 2 * 1             # return from 3rd call as number=1
3 * 2                 # return from 2nd call
6                     # return from 1st call

Laten we eens kijken naar een afbeelding die een stapsgewijs proces laat zien van wat er aan de hand is:

Onze recursie eindigt wanneer het getal vermindert tot 1. Dit wordt de basisvoorwaarde genoemd.

Elke recursieve functie moet een basisvoorwaarde hebben die de recursie stopt, anders roept de functie zichzelf oneindig aan.

De Python-interpreter beperkt de diepten van recursie om oneindige recursie te voorkomen, wat resulteert in stack-overflows.

Standaard is de maximale recursiediepte 1000 . Als de limiet wordt overschreden, resulteert dit in RecursionError . Laten we eens kijken naar zo'n aandoening.

def recursor():
    recursor()
recursor()

Uitvoer

Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "<string>", line 2, in a
  File "<string>", line 2, in a
  File "<string>", line 2, in a
  [Previous line repeated 996 more times]
RecursionError: maximum recursion depth exceeded

Voordelen van recursie

  1. Recursieve functies zorgen ervoor dat de code er strak en elegant uitziet.
  2. Een complexe taak kan worden opgesplitst in eenvoudigere deelproblemen met behulp van recursie.
  3. Het genereren van een reeks is gemakkelijker met recursie dan met een geneste iteratie.

Nadelen van recursie

  1. Soms is de logica achter recursie moeilijk te volgen.
  2. Recursieve oproepen zijn duur (inefficiënt) omdat ze veel geheugen en tijd in beslag nemen.
  3. Recursieve functies zijn moeilijk te debuggen.

Python

  1. Python-functieargumenten
  2. Python Anonieme/Lambda-functie
  3. Python-woordenboek
  4. Python-generatoren
  5. Python-sluitingen
  6. Python-decorateurs
  7. Python Lambda-functies met VOORBEELDEN
  8. Python abs() Functie:Voorbeelden van absolute waarden
  9. Python round() functie met VOORBEELDEN
  10. Python range() Functie:Float, List, For loop Voorbeelden
  11. Python map() functie met VOORBEELDEN