2.3 Οι συναρτήσεις στην Python

Μια συνάρτηση είναι ένα τμήμα κώδικα που εκτελείται μόνο όταν καλείται με τη χρήση του ονόματός της. Μπορείτε να περάσετε δεδομένα στη συνάρτηση μέσω παραμέτρων, οι οποίες είναι τιμές που δίνονται ως είσοδος κατά την κλήση της συνάρτησης. Μια συνάρτηση μπορεί να εκτελέσει ενέργειες με βάση τις παραμέτρους που λαμβάνει και μπορεί επίσης να επιστρέψει ένα αποτέλεσμα ως έξοδο.

Ας υποθέσουμε ότι θέλουμε να ορίσουμε μια απλή συνάρτηση που προσθέτει δύο αριθμούς και επιστρέφει το αποτέλεσμα. Ορίζουμε τη συνάρτηση με το όνομα “add_numbers” και δύο παραμέτρους “a” και “b”. Ο κώδικας θα μπορούσε να είναι κάπως έτσι:

def add_numbers(a, b):
    result = a + b  # Υπολογισμός του αθροίσματος των αριθμών a και b και αποθήκευση στη μεταβλητή result
    return result  # Επιστροφή του αποτελέσματος

# Κλήση της συνάρτησης add_numbers και αποθήκευση του αποτελέσματος στη μεταβλητή sum
sum = add_numbers(3, 4)

print(sum)  # Εκτύπωση του αποτελέσματος του αθροίσματος (7)

Στο παράδειγμα αυτό, η συνάρτηση “add_numbers” παίρνει δύο παραμέτρους “a” και “b” και εκτελεί την πράξη πρόσθεσης μεταξύ τους. Το αποτέλεσμα επιστρέφεται χρησιμοποιώντας τη δήλωση “return”. Στη συνέχεια, καλούμε τη συνάρτηση με τις τιμές 3 και 4 και αποθηκεύουμε το αποτέλεσμα στη μεταβλητή “sum”, η οποία εκτυπώνεται. Το αποτέλεσμα που θα εκτυπωθεί είναι 7, αφού η πρόσθεση των αριθμών 3 και 4 είναι 7.

Παράδειγμα

def say_hello(name):
    print("Γεια σου, " + name)  # Εκτύπωση μηνύματος χαιρετισμού με τη χρήση της μεταβλητής name

say_hello("Γιάννης")  # Κλήση της συνάρτησης say_hello με το όρισμα "Γιάννης"

Ο παραπάνω κώδικας ορίζει μια συνάρτηση με όνομα say_hello, η οποία δέχεται ένα όρισμα name. Εντός της συνάρτησης, εκτυπώνεται ένα μήνυμα χαιρετισμού που περιλαμβάνει την τιμή της μεταβλητής name.

Στην τελευταία γραμμή του κώδικα, γίνεται κλήση της συνάρτησης say_hello με το όρισμα "Γιάννης". Κατά την εκτέλεση, η συνάρτηση εκτυπώνει το μήνυμα “Γεια σου, Γιάννης” στην έξοδο.

Παράδειγμα

def add_numbers(a, b):
    """
    Ορίζεται η συνάρτηση add_numbers με δύο παραμέτρους a και b
    """
    return a + b  # Επιστρέφεται ο αθροισμός των παραμέτρων a και b

result = add_numbers(5, 3)  # Κλήση της συνάρτησης add_numbers με τις τιμές 5 και 3 και αποθήκευση του αποτελέσματος στη μεταβλητή result
print(result)  # Εκτύπωση του αποτελέσματος

Ο παραπάνω κώδικας περιλαμβάνει την ορισμό και χρήση μιας συνάρτησης add_numbers, καθώς και την εκτύπωση ενός αποτελέσματος.

Η συνάρτηση add_numbers δέχεται δύο παραμέτρους a και b και επιστρέφει το άθροισμά τους, δηλαδή το αποτέλεσμα της πρόσθεσής τους.

Στο κύριο μέρος του κώδικα, γίνεται η κλήση της συνάρτησης add_numbers με τις τιμές 5 και 3 ως ορίσματα. Το αποτέλεσμα της συνάρτησης αποθηκεύεται στη μεταβλητή result. Στη συνέχεια, το αποτέλεσμα εκτυπώνεται με τη χρήση της εντολής print.

Έτσι, ο κώδικας εκτελείται προσθέτοντας τις τιμές 5 και 3 και εκτυπώνοντας το αποτέλεσμα, που είναι 8, στην οθόνη.

Στη γλώσσα προγραμματισμού Python, για να ορίσουμε μια συνάρτηση χρησιμοποιούμε τη λέξη-κλειδί “def”.

Παράδειγμα:

def greet(name):
    print("Hello, " + name)  # Εκτύπωση μηνύματος καλωσορίσματος με την παράμετρο name

greet("John")  # Κλήση της συνάρτησης greet με την τιμή "John" ως όρισμα

Ο παραπάνω κώδικας ορίζει μια συνάρτηση με όνομα greet που δέχεται ένα όρισμα με όνομα name. Στο εσωτερικό της συνάρτησης, εκτυπώνεται το μήνυμα “Hello, ” ακολουθούμενο από την τιμή της παραμέτρου name.

Ακολούθως, καλείται η συνάρτηση greet με την τιμή “John” ως όρισμα. Κατά την εκτέλεση, η συνάρτηση greet εκτυπώνει το μήνυμα “Hello, John” στην οθόνη.

[adinserter block=”2″]

Ορίζουμε μια συνάρτηση με το όνομα “greet” που θα χαιρετά το όνομα που θα δοθεί ως παράμετρος και θα επιστρέφει ένα μήνυμα καλωσορίσματος:

def greet(name):
    # Ορισμός της συνάρτησης greet με μια παράμετρο name
    print("Hello, " + name + "! Welcome to Python programming.")  # Εκτύπωση μηνύματος καλωσορίσματος με την τιμή της παραμέτρου name

greet("John")  # Κλήση της συνάρτησης greet με την τιμή "John" για την παράμετρο name

Ο παραπάνω κώδικας ορίζει μια συνάρτηση με όνομα greet, η οποία δέχεται μια παράμετρο με όνομα name. Στο εσωτερικό της συνάρτησης, εκτυπώνεται ένα μήνυμα καλωσορίσματος που περιλαμβάνει την τιμή της παραμέτρου name.

Στο κύριο μέρος του κώδικα, καλείται η συνάρτηση greet με την τιμή "John" για την παράμετρο name. Έτσι, θα εκτυπωθεί το μήνυμα καλωσορίσματος "Hello, John! Welcome to Python programming.".

Στις συναρτήσεις, μπορείτε να περάσετε πληροφορίες χρησιμοποιώντας ορίσματα.Τα ορίσματα ορίζονται μετά το όνομα της συνάρτησης, μέσα σε παρενθέσεις. Μπορείτε να προσθέσετε όσα ορίσματα επιθυμείτε, απλώς χωρίζοντάς τα με κόμμα.

Το παρακάτω παράδειγμα περιλαμβάνει μια συνάρτηση με ένα όρισμα με όνομα fname. Όταν καλείται η συνάρτηση, περνάμε ένα όνομα ως όρισμα, το οποίο χρησιμοποιείται εντός της συνάρτησης για να εκτυπωθεί το πλήρες όνομα.

def my_function(fname):
  print(fname + " Refsnes")  # Εκτύπωση του ονόματος μετά την προσθήκη του κειμένου "Refsnes"

my_function("Emil")  # Κλήση της συνάρτησης με το όρισμα "Emil"
my_function("Tobias")  # Κλήση της συνάρτησης με το όρισμα "Tobias"
my_function("Linus")  # Κλήση της συνάρτησης με το όρισμα "Linus"

Ο παραπάνω κώδικας ορίζει μια συνάρτηση με όνομα my_function, η οποία δέχεται ένα όρισμα fname. Η συνάρτηση εκτυπώνει την τιμή του ορίσματος fname συνδυασμένη με το κείμενο “Refsnes”.

Στη συνέχεια, η συνάρτηση καλείται τρεις φορές με διαφορετικά ορίσματα: “Emil”, “Tobias” και “Linus”. Κάθε φορά που η συνάρτηση καλείται, εκτυπώνεται το όνομα που περνάμε ως όρισμα, συνδυασμένο με το κείμενο “Refsnes”. Στην προκειμένη περίπτωση, θα εκτυπωθούν οι παρακάτω γραμμές:

Emil Refsnes
Tobias Refsnes
Linus Refsnes

Έτσι, ο κώδικας εκτελεί τη συνάρτηση my_function τρεις φορές με διαφορετικά ορίσματα και εκτυπώνει το αποτέλεσμα στην οθόνη.

Οι όροι “παράμετρος” και “προσαρτημένη μεταβλητή” (ή απλά “όρισμα”) χρησιμοποιούνται για να αναφερθούν στην ίδια έννοια: τη μεταβίβαση πληροφοριών σε μια συνάρτηση. Ο όρος “παράμετρος” χρησιμοποιείται κατά τον ορισμό της συνάρτησης για να αναφερθεί στο όρισμα που αναμένεται να περάσει στη συνάρτηση. Από την άλλη πλευρά, ο όρος “προσαρτημένη μεταβλητή” ή απλά “όρισμα” χρησιμοποιείται κατά την κλήση της συνάρτησης για να αναφερθεί στην τιμή που περνάμε στη συνάρτηση.

Έτσι, οι όροι “παράμετρος” και “προσαρτημένη μεταβλητή” (ή “όρισμα”) περιγράφουν την ίδια ιδέα της μεταβίβασης πληροφοριών σε μια συνάρτηση, με τη διαφορά ότι ο πρώτος όρος αναφέρεται στον ορισμό της συνάρτησης, ενώ ο δεύτερος όρος αναφέρεται στην κλήση της συνάρτησης.

Στην Python, μια συνάρτηση απαιτεί τον σωστό αριθμό ορισμάτων κατά την κλήση της, σύμφωνα με την προεπιλεγμένη συμπεριφορά. Αυτό σημαίνει ότι πρέπει να καλέσουμε μια συνάρτηση με τον ακριβή αριθμό ορισμάτων που αναμένει, ούτε περισσότερα ούτε λιγότερα.

Για παράδειγμα, αν μια συνάρτηση έχει ορισμένα δύο ορίσματα, θα πρέπει να την καλέσουμε με ακριβώς δύο ορίσματα, καθώς αυτό είναι απαραίτητο για την σωστή εκτέλεση της συνάρτησης. Εάν δώσουμε περισσότερα από δύο ορίσματα ή λιγότερα από δύο ορίσματα, θα προκληθεί σφάλμα.

Στο παρακάτω παράδειγμα έχουμε μια συνάρτηση που παίρνει δύο ορίσματα και επιστρέφει το αθροισμά τους:

def add_numbers(x, y):
    # Υπολογισμός του αποτελέσματος πρόσθεσης των αριθμών x και y
    result = x + y
    # Επιστροφή του αποτελέσματος
    return result

Αν προσπαθήσουμε να καλέσουμε αυτήν τη συνάρτηση με διαφορετικό αριθμό ορισμάτων, θα λάβουμε ένα σφάλμα:

add_numbers(2, 3)      # Εκτέλεση επιτυχής
add_numbers(2)         # Σφάλμα: αναμένει 2 ορίσματα
add_numbers(2, 3, 4)   # Σφάλμα: αναμένει 2 ορίσματα

[adinserter block=”3″]

Στο πρώτο παράδειγμα καλούμε τη συνάρτηση με δύο ορίσματα και επιστρέφεται ο σωστός αριθμός.

Στο δεύτερο παράδειγμα, καλούμε τη συνάρτηση με ένα μόνο όρισμα, αντί για τα δύο που αναμένει η συνάρτηση. Έτσι θα λάβουμε ένα σφάλμα που μας ενημερώνει ότι η συνάρτηση περιμένει ως είσοδο άλλο αριθμό ορισμά

Στην Python, μπορούμε να ορίσουμε μια συνάρτηση με παράμετρο *args, η οποία επιτρέπει την πέραση ενός αυθαίρετου αριθμού ορισμάτων. Ο όρος *args χρησιμοποιείται για να συλλέξει όλα τα επιπλέον ορίσματα που περνιούνται στη συνάρτηση και να τα αποθηκεύσει σε ένα tuple. Έτσι, η συνάρτηση μπορεί να δεχτεί οποιονδήποτε αριθμό ορισμάτων.

Για παράδειγμα:

def my_function(*args):
  """
  Ορισμός μιας συνάρτησης που δέχεται μια αυθαίρετη λίστα ορισμάτων.

  Args:
    *args: Μη καθορισμένος αριθμός ορισμάτων.

  Returns:
    None
  """

  for arg in args:
    # Εκτύπωση του κάθε ορίσματος
    print(arg)

# Κλήση της συνάρτησης με τρία ορίσματα: "apple", "banana", "cherry"
my_function("apple", "banana", "cherry")

Η παραπάνω συνάρτηση my_function μπορεί να καλεστεί με οποιονδήποτε αριθμό ορισμάτων. Τα ορίσματα που περνιούνται θα αποθηκευτούν στο tuple args. Στο παράδειγμα αυτό, κάθε όρισμα του args εκτυπώνεται στην οθόνη.

Μπορείτε επίσης να περάσετε ορίσματα σε μια συνάρτηση χρησιμοποιώντας τη σύνταξη key=value. Αυτό σας επιτρέπει να περάσετε τα ορίσματα με οποιαδήποτε σειρά θέλετε, αφού προσδιορίζετε το όνομα του ορίσματος στο οποίο θέλετε να ανατεθεί η τιμή.

Παράδειγμα:

def my_function(child3, child2, child1):
  print("The youngest child is " + child3)  # Εκτύπωση μηνύματος με τον νεότερο παιδί

# Κλήση της συνάρτησης my_function με παράμετρους child1, child2, child3
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")

Ο παραπάνω κώδικας ορίζει μια συνάρτηση με όνομα my_function, η οποία δέχεται τρία ορίσματα (child3, child2, child1). Στο εσωτερικό της συνάρτησης, εκτυπώνεται το μήνυμα “The youngest child is ” προσθέτοντας την τιμή της παραμέτρου child3.

Στην τελευταία γραμμή κώδικα, γίνεται η κλήση της συνάρτησης my_function με συγκεκριμένες τιμές για τις παραμέτρους (child1 = "Emil", child2 = "Tobias", child3 = "Linus"). Έτσι, η συνάρτηση καλείται με τις παραμέτρους αυτές και εκτελείται η εντολή εκτύπωσης με το μήνυμα “The youngest child is Linus”.

Μπορείτε να χρησιμοποιήσετε δύο αστερίσκους (**) πριν το όνομα μιας παραμέτρου στον ορισμό μιας συνάρτησης. Με αυτόν τον τρόπο, η συνάρτηση θα δέχεται ένα λεξικό ορισμάτων και θα μπορεί να έχει πρόσβαση στα στοιχεία του λεξικού μέσω του ονόματος της παραμέτρου.

Παράδειγμα:

def my_function(**kwargs):
  """
  Ορισμός μιας συνάρτησης που δέχεται οποιονδήποτε αριθμό παραμέτρων με λέξεις-κλειδιά (keyword arguments).
  """
  for key, value in kwargs.items():
    """
    Επανάληψη μέσω των αντικειμένων του λεξικού kwargs με τη χρήση της μεθόδου items().
    """
    print(key, value)  # Εκτύπωση του κλειδιού και της τιμής του.

my_function(first='John', last='Doe', age=35)  # Κλήση της συνάρτησης με παράμετρους

Ο παραπάνω κώδικας ορίζει μια συνάρτηση με το όνομα my_function, η οποία δέχεται οποιονδήποτε αριθμό παραμέτρων με λέξεις-κλειδιά (keyword arguments).

Μέσα στη συνάρτηση, χρησιμοποιείται ένας βρόχος for για να επαναληφθούν όλα τα αντικείμενα του λεξικού kwargs. Κάθε αντικείμενο αποτελείται από ένα ζεύγος (key, value).

Στο εσωτερικό του βρόχου, το key αναφέρεται στο κλειδί του λεξικού και το value αναφέρεται στην αντίστοιχη τιμή. Τα κλειδιά και οι τιμές εκτυπώνονται στην οθόνη χρησιμοποιώντας την εντολή print(key, value).

Τελικά, καλείται η συνάρτηση my_function με τρεις παραμέτρους (προσδιορισμένες με λέξεις-κλειδιά), τα οποία είναι first='John', last='Doe' και age=35. Αυτές οι παράμετροι περνιούνται στη συνάρτηση και εκτελείται ο κώδικας με τον προαναφερθέν βρόχο for για εκτύπωση των κλειδιών και των τιμών τους.

Στην Python, μπορούμε να ορίσουμε προκαθορισμένες τιμές για τις παραμέτρους μιας συνάρτησης. Αυτές οι προκαθορισμένες τιμές χρησιμοποιούνται όταν καλούμε τη συνάρτηση και δεν παρέχουμε τιμές για αυτές τις παραμέτρους.

Ο ορισμός μιας προκαθορισμένης τιμής γίνεται με τη χρήση του = μετά τον ορισμό της παραμέτρου. Όταν καλείται η συνάρτηση, αν δεν δοθεί τιμή για μια παράμετρο, η συνάρτηση θα χρησιμοποιήσει την προκαθορισμένη τιμή που ορίστηκε.

Αυτό επιτρέπει την ευελιξία κατά την κλήση μιας συνάρτησης, καθώς μπορούμε να παρέχουμε μόνο τις παραμέτρους που θέλουμε να αλλάξουμε και να αφήνουμε τις υπόλοιπες να πάρουν τις προκαθορισμένες τιμές.

Έτσι, αν δεν δοθεί τιμή για έναν παράμετρο κατά την κλήση της συνάρτησης, η συνάρτηση θα χρησιμοποιήσει την προκαθορισμένη τιμή που ορίστηκε για αυτόν τον παράμετρο.

Το παρακάτω παράδειγμα δείχνει πώς να χρησιμοποιήσετε μια προκαθορισμένη τιμή παραμέτρου σε μια συνάρτηση:

def my_function(country="Norway"):
  print("I am from " + country)

my_function("Sweden")  # Κλήση της συνάρτησης με την παράμετρο "Sweden"
my_function("India")  # Κλήση της συνάρτησης με την παράμετρο "India"
my_function()  # Κλήση της συνάρτησης χωρίς παράμετρο (αξιοποιείται η προκαθορισμένη τιμή "Norway")
my_function("Brazil")  # Κλήση της συνάρτησης με την παράμετρο "Brazil"

Ο παραπάνω κώδικας ορίζει μια συνάρτηση με το όνομα my_function, η οποία δέχεται μια παράμετρο country με προκαθορισμένη τιμή “Norway”. Η συνάρτηση εκτυπώνει το μήνυμα “I am from ” ακολουθούμενο από την τιμή της παραμέτρου country.

Στη συνέχεια, γίνονται διάφορες κλήσεις της συνάρτησης my_function με διάφορες παραμέτρους:

  • Η κλήση my_function("Sweden") εκτυπώνει το μήνυμα “I am from Sweden”.
  • Η κλήση my_function("India") εκτυπώνει το μήνυμα “I am from India”.
  • Η κλήση my_function() εκτυπώνει το μήνυμα “I am from Norway”, καθώς δεν δίνεται παράμετρος και χρησιμοποιείται η προκαθορισμένη τιμή “Norway”.
  • Η κλήση my_function("Brazil") εκτυπώνει το μήνυμα “I am from Brazil”.

Έτσι, ο κώδικας εκτελεί τη συνάρτηση my_function με διάφορες παραμέτρους και εκτυπώνει τα αντίστοιχα μηνύματα.

Μπορείτε να περάσετε οποιοδήποτε είδος δεδομένων ως παράμετρο σε μια συνάρτηση (όπως συμβολοσειρά, αριθμό, λίστα, λεξικό κ.λπ.), και η συνάρτηση θα το χειριστεί ως τον ίδιο τύπο δεδομένων εντός της συνάρτησης.

[adinserter block=”4″]

Παράδειγμα

def my_function(food):
  for x in food:
    print(x)  # Εκτύπωση του στοιχείου x

fruits = ["apple", "banana", "cherry"]  # Δημιουργία λίστας με ονομασία fruits που περιέχει τα φρούτα

my_function(fruits)  # Κλήση της συνάρτησης my_function με την παράμετρο fruits

Ο παραπάνω κώδικας ορίζει μια συνάρτηση με όνομα my_function που δέχεται μια παράμετρο με όνομα food. Η συνάρτηση αυτή εκτυπώνει κάθε στοιχείο της λίστας food με τη χρήση ενός βρόχου for.

Στη συνέχεια, δημιουργείται μια λίστα με όνομα fruits που περιέχει τα στοιχεία “apple”, “banana” και “cherry”.

Τέλος, καλείται η συνάρτηση my_function με παράμετρο τη λίστα fruits, η οποία εκτελείται και εκτυπώνει τα στοιχεία της λίστας με τη σειρά τους.

Συνολικά, ο κώδικας εκτυπώνει τα στοιχεία της λίστας fruits, δηλαδή τα φρούτα “apple”, “banana” και “cherry”.

Η χρήση της λέξης-κλειδιού “return” μέσα σε μια συνάρτηση στην Python μας επιτρέπει να επιστρέψουμε μια τιμή ως αποτέλεσμα της συνάρτησης. Αυτή η τιμή μπορεί να χρησιμοποιηθεί από την κλήση της συνάρτησης ή να αποθηκευθεί σε μια μεταβλητή για μελλοντική χρήση.

Ένα απλό παράδειγμα είναι η συνάρτηση square() που υπολογίζει το τετράγωνο ενός αριθμού και επιστρέφει το αποτέλεσμα:

def square(x):
  return x * x  # Επιστρέφει το τετράγωνο του αριθμού x

result = square(5)  # Καλεί τη συνάρτηση square με όρισμα τον αριθμό 5 και αποθηκεύει το αποτέλεσμα στη μεταβλητή result
print(result)  # Εκτύπωση της τιμής της μεταβλητής result, αναμένοντας το αποτέλεσμα 25

Ο παραπάνω κώδικας ορίζει μια συνάρτηση με όνομα square που δέχεται έναν αριθμό x ως όρισμα και επιστρέφει το τετράγωνό του.

Στη συνέχεια, η μεταβλητή result ανατίθεται η τιμή που προκύπτει από την κλήση της συνάρτησης square(5), δηλαδή το τετράγωνο του αριθμού 5.

Τέλος, η εντολή print(result) εκτυπώνει την τιμή της μεταβλητής result, που αναμένεται να είναι 25, αφού το τετράγωνο του 5 είναι 25.

[adinserter block=”5″]

Οι ορισμοί συναρτήσεων πρέπει να περιλαμβάνουν τουλάχιστον μία εντολή για να ορίσουν τη λειτουργικότητα της συνάρτησης. Αν δεν επιθυμούμε να προσθέσουμε κάποια εντολή στον ορισμό μιας συνάρτησης, μπορούμε να χρησιμοποιήσουμε τη λέξη-κλειδί “pass” για να δηλώσουμε ότι δεν υπάρχει περαιτέρω λειτουργικότητα προς το παρόν. Η λέξη-κλειδί “pass” είναι μια placeholder εντολή που δεν κάνει τίποτα και απλά παραμένει ως σημείο αναφοράς για περαιτέρω ανάπτυξη του κώδικα..

Παράδειγμα:

def my_function():
  pass

Η αναδρομή στην Python αναφέρεται στη δυνατότητα μιας συνάρτησης να καλεί τον εαυτό της κατά τη διάρκεια της εκτέλεσής της.

Η αναδρομή είναι μια σημαντική έννοια στα μαθηματικά και την προγραμματισμό. Αυτό σημαίνει ότι μια συνάρτηση μπορεί να καλέσει τον εαυτό της μέσα από το σώμα της. Αυτή η δυνατότητα επιτρέπει την επαναληπτική εκτέλεση κώδικα και την επίλυση προβλημάτων που απαιτούν αναδρομική λογική.

Ένα παράδειγμα αναδρομικής συνάρτησης είναι η υπολογιστική του παραγοντικού ενός αριθμού. Η συνάρτηση υπολογίζει το παραγοντικό ενός αριθμού επιστρέφοντας το γινόμενο του με το παραγοντικό του αριθμού που είναι ένας μικρότερος από αυτόν. Η συνάρτηση καλείται αναδρομικά με μειωμένο αριθμό, μέχρι να φτάσει στη βάση της αναδρομής όπου ο αριθμός είναι 1, και τότε επιστρέφει 1.

Η χρήση της αναδρομής επιτρέπει την εκφραστικότητα και την αποτελεσματικότητα στον προγραμματισμό και μπορεί να χρησιμοποιηθεί για την επίλυση προβλημάτων που απαιτούν επαναλαμβανόμενη διαδικασία.

Ο προγραμματιστής πρέπει να είναι πολύ προσεκτικός με την αναδρομή, καθώς μπορεί εύκολα να οδηγήσει σε μια συνάρτηση που δεν τερματίζει ποτέ ή χρησιμοποιεί υπερβολική ποσότητα μνήμης ή επεξεργαστικής ισχύος. Ωστόσο, όταν χρησιμοποιείται σωστά, η αναδρομή μπορεί να είναι μια πολύ αποτελεσματική και γραμμική προσέγγιση στον προγραμματισμό.

Παράδειγμα αναδρομικής συνάρτησης:

def tri_recursion(k):
    if k > 0:
        result = k + tri_recursion(k - 1)  # Αναδρομική κλήση της συνάρτησης με την παράμετρο k - 1
        print(result)  # Εκτύπωση του αποτελέσματος
    else:
        result = 0  # Τερματική συνθήκη: αν k είναι μηδέν, το αποτέλεσμα είναι 0
    return result  # Επιστροφή του αποτελέσματος

print("Το αποτέλεσμα της αναδρομής είναι:")
tri_recursion(6)  # Κλήση της συνάρτησης tri_recursion με την παράμετρο 6

Ο παραπάνω κώδικας υλοποιεί μια αναδρομική συνάρτηση με όνομα tri_recursion. Η συνάρτηση αυτή δέχεται έναν ακέραιο αριθμό k ως παράμετρο.

Η λειτουργία της συνάρτησης tri_recursion είναι η εξής:

  1. Αν ο αριθμός k είναι μεγαλύτερος από το μηδέν, τότε γίνεται μια αναδρομική κλήση της συνάρτησης με την παράμετρο k - 1. Αυτό σημαίνει ότι η συνάρτηση tri_recursion θα κληθεί ξανά με μείωση του k κατά 1.
  2. Το αποτέλεσμα της αναδρομικής κλήσης προστίθεται στον αριθμό k, και το αποτέλεσμα αποθηκεύεται στη μεταβλητή result.
  3. Το αποτέλεσμα εκτυπώνεται στην οθόνη.
  4. Η συνάρτηση tri_recursion επιστρέφει την τιμή της μεταβλητής result.

Στον κώδικα παρατίθεται η κλήση της συνάρτησης tri_recursion με την παράμετρο 6. Έτσι, η συνάρτηση θα καλεστεί αναδρομικά με τις παραμέτρους 6, 5, 4, 3, 2, 1, με τη σειρά. Κάθε φορά που γίνεται μια αναδρομική κλήση, το αποτέλεσμα εκτυπώνεται στην οθόνη. Τελικά, θα εμφανιστούν οι αριθμοί 6,

11, 15, 18, 20, 21 σε ξεχωριστές γραμμές.

Συνολικά, ο κώδικας εκτελεί μια αναδρομική λούπα και εκτυπώνει τα αποτελέσματα κάθε αναδρομής.

5 Ιουνίου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων