Αναδρομικές συναρτήσεις αυτοαποκαλούνται ως μέρος του ορισμού τους . Για παράδειγμα :
>>> def συντελεστή (x ) :
. . . συντελεστή (x )
Αυτή η λειτουργία θα συνεχίσει να αυτοαποκαλείται μέχρις ότου το σύστημα δεν μπορεί πλέον να κρατήσει το ποσό των κλήσεων λειτουργίας γίνεται ( κλήσεις λειτουργίας βρίσκεται στη μνήμη , όπως οποιαδήποτε άλλα δεδομένα ) . Ωστόσο, αυτό απλοποιεί τον τρόπο ένα αναδρομικές συναρτήσεις λειτουργεί εννοιολογικά : Μια συνάρτηση (συντελεστής ) αυτοαποκαλείται ( συντελεστή (x ) ) , ως μέρος του ορισμού της
εικόνων υποθέσεις Βάση
Η
. Μια αναδρομική συνάρτηση πρέπει να έχει ό, τι θα μπορούσε να ονομαστεί «περιπτώσεις βάσης », ή τους όρους που λένε τη λειτουργία για να σταματήσει αναδρομή του . Αυτό θα μπορούσε να είναι οποιαδήποτε προϋπόθεση ότι η λειτουργία θα μπορούσε να έχει πεισθεί ως μέρος της λειτουργίας του . Ως κλασικό παράδειγμα , η συνάρτηση παραγοντικό βρίσκει το παραγοντικό ενός αριθμού n ( n! , ή n * n - 1 * n - 2 ... 0 ) . Έτσι, το παραγοντικό του 3 θα έπρεπε να υπολογίζουν σε 3 * 2 * 1 = 6 . Ένας προγραμματιστής μπορεί να χρησιμοποιήσει τον αριθμό 0 ως το βασικό σενάριο αυτής της λειτουργίας :
>>> αν x == 0 :
. . . επιστροφή 1
Η Αναδρομή
Η
Αν η συνάρτηση παραγοντικό έχει τώρα μια βασική περίπτωση ( x == 0 ) , τότε αναδρομή θα σταματήσει σε αυτή την κατάσταση . Έτσι , θα ήταν μόνο ένα θέμα που χρησιμοποιούν αναδρομή για να εκτελέσει την παραγοντική λειτουργία :
>>> άλλο :
. . . επιστροφή * συντελεστής x (x - 1 )
Αν η x δεν είναι ίσο με 0 , τότε η αναδρομή θα ξεκινήσει /συνεχιστεί . Η δήλωση απόδοσης θα καλέσει " παράγοντας " και περιμένετε . Κάθε νέα κλήση της συνάρτησης θα κάνει το ίδιο , καλώντας και να περιμένει μέχρι την τελευταία κλήση της συνάρτησης ( όταν το x == 0 ) επιστρέφει 1 . Στη συνέχεια , κάθε προηγούμενη κλήση θα τελειώσει τη δήλωση επιστροφής ( πολλαπλασιάστε την επιστρεφόμενη τιμή από το " συντελεστή " από το x ) μέχρι το παραγοντικό επιστρέφεται .
Εικόνων Python Αναδρομή
Η
Αναδρομή στην οποιαδήποτε γλώσσα μπορεί να καταλήξει σε ένα άπειρο βρόχο : Δηλαδή , μια επαναληπτική δομή που δεν τελειώνει ποτέ , μέχρι το σύστημα να σταματήσει λόγω έλλειψης πόρων . Python σταματά αυτό το " άπειρο " αναδρομή στα 1.000 κλήσεις ( έτσι μια συνάρτηση μπορεί να ζητήσει η ίδια σε 1.000 παράδειγμα βίου αναδρομική αλυσίδας πριν Python σταματά τη διαδικασία ) . Ο προγραμματιστής μπορεί να αλλάξει την τιμή αυτή μέσα από τις βιβλιοθήκες του συστήματος , όπως αυτό το παράδειγμα :
>>> συστήματα εισαγωγής
>>> sys.setrecursionlimit ( 2000 )
Ωστόσο , σε εκείνο το σημείο οι προγραμματιστές θα μπορούσαν να αναρωτηθούν αν αναδρομής είναι η καλύτερη λύση για το πρόβλημα .
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα