Προγραμματισμός

* Γνώση Υπολογιστών >> Προγραμματισμός >> Προγραμματισμός Υπολογιστών Γλώσσες

Πώς να μετατρέψετε το Περιοδικός για την Επαναληπτική

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

Αναλύστε το αναδρομικό αλγόριθμο . Σε αυτό το παράδειγμα , θα χρησιμοποιούμε το αναδρομικό λύση για το παραγοντικό πρόβλημα :

int παραγοντικού ( int γεγονός ) {

αν ( γεγονός == 0 ) { επιστροφή 1? } Else { γεγονός επιστροφή * παραγοντικό ( γεγονός - 1 ) ? } } 2

Αποφασίστε αν υπάρχουν επιχειρήματα λειτουργία μπορεί να πραγματοποιηθεί σε μεταβλητές . Στο παραγοντικό παράδειγμα, τα αποτελέσματα του παραγοντικού μπορούν να αποθηκευτούν σε μια μεταβλητή " total_factorial " για τη διάρκεια της κάθε επανάληψης. Αυτό το παράδειγμα δείχνει την αναδρομικό αλγόριθμο παραγοντικού και τη μεταβλητή που θα χρησιμοποιηθεί για την αναδρομική επιχείρημα :

int total_factorial = 0 :
3

Καθορίστε μια δομή βρόχου . Σε C + + , για παράδειγμα, το "ενώ" βρόχος λειτουργεί καλά με επαναλήψεις που έχουν indeterminant μήκος. "Για" βρόχους , από την άλλη πλευρά , λειτουργεί καλά όταν ένας βρόχος θα πάμε για ένα αυστηρό διάρκειας , που αντιπροσωπεύεται από έναν ακέραιο αριθμό κάποιου είδους . Για το παραγοντικό παράδειγμα, ένας βρόχος "for" θα λειτουργήσει καλά :

int παραγοντικού = 5 ? Int total_factorial = 0 ?
Η

4 Καθορίστε την ανάσχεση συνθήκες . Συνήθως , όπως στο εργοστασιακό παράδειγμα , η αναδρομή θα τερματίσει όταν ικανοποιείται μια συνθήκη . Σε ένα διαλογικό βρόχο , όπως ο βρόχος for , βοηθά να ξέρει πριν από το χέρι . Από τη στιγμή που γνωρίζουμε ότι στην εύρεση το παραγοντικό ενός αριθμού " n" ότι θα επαναλάβει n-1 φορές ( εκτός από το μηδέν ) , μπορείτε να ξεκινήσετε από το ένα και να τρέξει μέχρι το παραγοντικό αριθμός :

για ( int i = 1 ? i <= παραγοντικό ? i + + ) {if ( i == 1 ) { total_factorial = 1 ? } αλλού { συνολικού παραγοντικό * = i ? } }
Η
εικόνων

Συναφής σύστασή

Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα