Αναδρομή C ++ (με παράδειγμα)

Σε αυτό το σεμινάριο, θα μάθουμε για την αναδρομική λειτουργία στο C ++ και τη λειτουργία της με τη βοήθεια παραδειγμάτων.

Μια συνάρτηση που ονομάζεται γνωστή ως αναδρομική συνάρτηση. Και, αυτή η τεχνική είναι γνωστή ως επανάληψη.

Εργασία της αναδρομής στο C ++

 void recurse() (… recurse();… ) int main() (… recurse();… )

Το παρακάτω σχήμα δείχνει πώς λειτουργεί η αναδρομή καλώντας ξανά και ξανά.

Πώς λειτουργεί η αναδρομή στον προγραμματισμό C ++

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

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

Παράδειγμα 1: Παράγοντα ενός αριθμού που χρησιμοποιεί αναδρομή

 // Factorial of n = 1*2*3*… *n #include using namespace std; int factorial(int); int main() ( int n, result; cout <> n; result = factorial(n); cout << "Factorial of " << n << " = " < 1) ( return n * factorial(n - 1); ) else ( return 1; ) )

Παραγωγή

 Εισαγάγετε έναν μη αρνητικό αριθμό: 4 Παράγοντα 4 = 24

Εργασία του Factorial Program

Πώς λειτουργεί αυτό το πρόγραμμα αναδρομής C ++

Όπως μπορούμε να δούμε, η factorial()λειτουργία καλείται. Ωστόσο, κατά τη διάρκεια κάθε κλήσης, μειώσαμε την τιμή του n κατά 1. Όταν το n είναι μικρότερο από 1, η factorial()συνάρτηση επιστρέφει τελικά την έξοδο.

Πλεονεκτήματα και μειονεκτήματα της επανάληψης

Ακολουθούν τα πλεονεκτήματα και τα μειονεκτήματα της χρήσης αναδρομής στο C ++.

Πλεονεκτήματα της αναδρομής C ++

  • Κάνει τον κωδικό μας πιο σύντομο και καθαρότερο.
  • Απαιτείται επανάληψη σε προβλήματα που αφορούν δομές δεδομένων και προηγμένους αλγόριθμους, όπως το Graph και το Tree Traversal.

Μειονεκτήματα της επανάληψης C ++

  • Χρειάζεται πολύς χώρος στοίβας σε σύγκριση με ένα επαναλαμβανόμενο πρόγραμμα.
  • Χρησιμοποιεί περισσότερο χρόνο επεξεργαστή.
  • Μπορεί να είναι πιο δύσκολο να εντοπιστεί ο εντοπισμός σφαλμάτων σε σύγκριση με ένα ισοδύναμο επαναληπτικό πρόγραμμα.

ενδιαφέροντα άρθρα...