Skip to main content

Τι είναι μια αναδρομική κλήση;

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

Η έννοια της επανάληψης ενδεχομένως απεικονίζεται καλύτερα μέσω της χρήσης ενός παραδείγματος.Ας υποθέσουμε ότι ένα Roofer εφαρμόζει νέα έρπητα ζωστήρα σε ένα σπίτι.Για να ξεκινήσει, πρέπει να φέρει μια δέσμη βότσαλα στην οροφή.Μόλις έχει καρφώσει την πρώτη δέσμη στη θέση του, πρέπει να αναρριχηθεί κάτω από τη σκάλα, να ανακτήσει μια άλλη δέσμη και να το καρφώσει στη θέση του.Η διαδικασία συνεχίζεται ως μια σειρά GO, Refetch, επιστρέφει μέχρι να εφαρμοστεί το τελευταίο βότσαλο.Σε αυτό το σημείο, ο Roofer είναι ελεύθερος να προχωρήσει στην επόμενη δουλειά ή να πάει στο σπίτι.

Αν και το παράδειγμα είναι μια υπεραπλούστευση, περιέχει όλα τα στοιχεία μιας αναδρομικής κλήσης.Υπάρχει ένα σημείο εκκίνησης, ο Roofer πρέπει να ανακτήσει αυτό που χρειάζεται, να επιστρέψει στην αρχή και, όταν η τελική κατάσταση ικανοποιείται, σταματήστε.Αυτό είναι βασικά αυτό που κάνει το πρόγραμμα.Ξεκινά, εφαρμόζει μια ενέργεια, επιστρέφει στον εαυτό του και τερματίζεται όταν εμφανίζεται η συνθήκη τελικού.Είναι απαραίτητο για όλες τις αναδρομικές κλήσεις.Χωρίς αυτό, η λειτουργία θα συνεχίσει να επαναλαμβάνεται.Στην καλύτερη περίπτωση, αυτό έχει ως αποτέλεσμα την αποστράγγιση των πόρων της μνήμης των συστημάτων.Κανονικά η υπερφόρτωση θα καταρρεύσει το πρόγραμμα σε κάποιο σημείο, αλλά από τη στιγμή που θα ανακαλυφθεί το πρόβλημα, μπορεί να γίνει σημαντική ζημιά. Οι έμπειροι προγραμματιστές θα μπορούσαν να αναγνωρίσουν την ομοιότητα μεταξύ μιας αναδρομικής κλήσης και ενός βρόχου ή ενώ βρόχους.Εάν, για παράδειγμα, ο στόχος είναι να βρεθεί ο συνολικός αριθμός αποθεμάτων όλων των μετοχών με αριθμούς εξαρτημάτων μεγαλύτερους από 999, ένα για βρόχο λέει στο πρόγραμμα να εντοπίσει όλες τις προκριματικές περιπτώσεις και ένα βρόχο While λέει στο πρόγραμμα να εκτελέσει το βρόχο μόνο ενώ οι δηλωμένοιΗ κατάσταση είναι έγκυρη.Μια αναδρομική κλήση μπορεί να ειπωθεί ότι συνδυάζει μερικά από τα χαρακτηριστικά αυτών των βρόχων με μια δήλωση IF-τότε Else.Εάν αυτή η κατάσταση είναι αληθινή, τότε κάντε αυτό, αλλιώς κάνετε κάτι διαφορετικό εάν η κατάσταση είναι ψευδής.Ωστόσο, η επανάληψη επιτρέπει τον πιο συμπαγές κώδικα και επιτρέπει την μεταφορά του προβλήματος στη λειτουργία πλησιέστερα στο σημείο που χρειάζεται.