Το κλασικό παράδειγμα της αναδρομής περιλαμβάνει παραγοντικών computing . Ένα παραγοντικό είναι το προϊόν της κάθε δεδομένη θετικός ακέραιος αριθμός πολλαπλασιάζεται με όλους τους ακέραιους αριθμούς μικρότερο . Το παραγοντικό του 5 είναι 5 * 4 * 3 * 2 * 1 , το παραγοντικό του 4 είναι 4 * 3 * 2 * 1 και ούτω καθεξής. Το παραγοντικό του κάθε αριθμός είναι ίσος με τον αριθμό αυτό πολλαπλασιάζεται με το παραγοντικό του αριθμού αμέσως κάτω από αυτό . Με άλλα λόγια, παραγοντικό ( 5 ) είναι η ίδια όπως 5 * παραγοντικού ( 4 ) , παραγοντικό ( 4 ) είναι η ίδια όπως 4 * παραγοντικό ( 3 ) και ούτω καθεξής , έτσι ώστε μια απλή παραγοντικό λειτουργία μπορεί να γραφτεί ως εξής:
int παραγοντικού ( int n ) { επιστροφή n * παραγοντικό ( n - 1 ) ? }
εικόνων Base Case
Η
Το πρόβλημα με αυτήν την απλή λειτουργία , ωστόσο , είναι ότι δεν έχει βάση την περίπτωση , ή την κατάσταση για να το πω πότε να σταματήσει . Όπως έχουν τα πράγματα , η λειτουργία θα συνεχίσει να αυτοαποκαλείται , όταν Ν φτάσει στο μηδέν και πέρα σε αρνητικούς αριθμούς , επιστρέφοντας παράλογο παραγοντικών . Στην πραγματικότητα , η συνάρτηση παραγοντικό πρέπει να σταματήσει όταν n = 1 , οπότε μια πραγματική συνάρτηση παραγοντικό θα μπορούσε να γραφτεί ως :
int παραγοντικού ( int n ) {if ( n == 1 ) { επιστροφή 1? } Else { επιστροφή n * παραγοντικό ( n - 1 ) ? } }
Στα αγγλικά , η λειτουργία αυτή εξετάζει τον αριθμό περάσει ως παράμετρος και αν ο αριθμός είναι 1 , επιστρέφει 1 . Διαφορετικά, η συνάρτηση επιστρέφει τον αριθμό πολλαπλασιάζεται με το παραγοντικό του αριθμού μείον ένα .
Η Πρόγραμμα Stack
Η
Όλες οι αναδρομικές προγράμματα πρέπει να έχουν ένα κατώτατο σημείο , ή βάση περίπτωση , όπου η λειτουργία είναι τόσο τετριμμένο ότι η απάντηση μπορεί να επιστραφεί άμεσα . Αναδρομή λειτουργεί με την προσθήκη , ή πιέζει , και την αφαίρεση , ή βρεθώ , μεμονωμένα καρέ και από μια δομή δεδομένων γνωστή ως μια στοίβα του προγράμματος . Υπάρχει μόνο μια πεπερασμένη ποσότητα χώρου στη στοίβα του προγράμματος , έτσι , χωρίς το βασικό σενάριο , ένα αναδρομικό πρόγραμμα θα συνεχίζατε απλά τρέχει μέχρι την υπερχείλιση στοίβας .
Εικόνων Πλεονεκτήματα και Μειονεκτήματα
αναδρομή είναι δύσκολο να κατανοήσουμε γιατί δεν είναι διαισθητική και μπορεί να φαίνεται , εκ πρώτης όψεως , να συμμετέχουν κυκλική ή εσφαλμένη λογική . Σύμφωνα με την IBM , αναδρομή σπάνια χρησιμοποιείται από τους προγραμματιστές σε προστακτικές γλώσσες προγραμματισμού - τα οποία δεν καθορίζεται ρητή ακολουθία των βημάτων για την εκτέλεση - επειδή πιστεύουν ότι είναι αργή και τα απόβλητα χώρο . Ωστόσο , εάν εφαρμοστεί σωστά , αναδρομή είναι μια ισχυρή τεχνική προγραμματισμού που μπορεί να βελτιώσει κάποιες εργασίες προγραμματισμού .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα