Σε αυτό το σεμινάριο, θα μάθετε να γράφετε αναδρομικές συναρτήσεις στον προγραμματισμό C με τη βοήθεια ενός παραδείγματος.
Μια συνάρτηση που ονομάζεται γνωστή ως αναδρομική συνάρτηση. Και, αυτή η τεχνική είναι γνωστή ως επανάληψη.
Πώς λειτουργεί η αναδρομή;
void recurse () (… recurse ();…) int main () (… recurse ();…)
Η αναδρομή συνεχίζεται έως ότου πληρούται κάποια προϋπόθεση για να την αποτρέψει.
Για να αποφευχθεί η άπειρη αναδρομή, εάν… αλλιώς μπορεί να χρησιμοποιηθεί δήλωση (ή παρόμοια προσέγγιση) όπου ένας κλάδος πραγματοποιεί την αναδρομική κλήση και άλλος όχι.
Παράδειγμα: Άθροισμα φυσικών αριθμών χρησιμοποιώντας αναδρομή
#include int sum(int n); int main() ( int number, result; printf("Enter a positive integer: "); scanf("%d", &number); result = sum(number); printf("sum = %d", result); return 0; ) int sum(int n) ( if (n != 0) // sum() function calls itself return n + sum(n-1); else return n; )
Παραγωγή
Εισαγάγετε έναν θετικό ακέραιο: 3 άθροισμα = 6
Αρχικά, το sum()
καλείται από τη main()
συνάρτηση με αριθμό που περνά ως όρισμα.
Ας υποθέσουμε ότι η τιμή του n sum()
είναι αρχικά 3. Κατά την επόμενη κλήση λειτουργίας, το 2 μεταφέρεται στη sum()
συνάρτηση. Αυτή η διαδικασία συνεχίζεται έως ότου το n είναι ίσο με 0.
Όταν το n είναι ίσο με 0, η if
συνθήκη αποτυγχάνει και το else
μέρος εκτελείται επιστρέφοντας το άθροισμα των ακέραιων τελικά στη main()
συνάρτηση.
Πλεονεκτήματα και μειονεκτήματα της επανάληψης
Η αναδρομή κάνει το πρόγραμμα κομψό. Ωστόσο, εάν η απόδοση είναι ζωτικής σημασίας, χρησιμοποιήστε αντί για βρόχους, καθώς η αναδρομή είναι συνήθως πολύ πιο αργή.
Τούτου λεχθέντος, η αναδρομή είναι μια σημαντική ιδέα. Χρησιμοποιείται συχνά σε δομή δεδομένων και αλγόριθμους. Για παράδειγμα, είναι συνηθισμένο να χρησιμοποιείται η αναδρομή σε προβλήματα όπως η διέλευση δέντρων.