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

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

Αναδρομή Προβλήματα σε Java

Σε ένα πρόγραμμα Java , μια επαναληπτική μέθοδος είναι μια μέθοδος που καλεί τον εαυτό της . Αναδρομικές μέθοδοι μπορεί να βοηθήσει τους προγραμματιστές να σχεδιάσουν έναν κωδικό απόσπασμα για να απλοποιήσει ένα πρόβλημα . Αναδρομικές μέθοδοι , επίσης, συχνά φαίνεται να είναι συνοπτική , αλλά η δημιουργία μιας αποτελεσματικής αναδρομική συνάρτηση μπορεί να είναι πολύ προκλητική . Όπως και με βρόχους και άλλες δομές ελέγχου σε Java , οι προγραμματιστές πρέπει να εργαστούν μέσα από το τι θα συμβεί όταν μια αναδρομική συνάρτηση εκτελεί . Αναδρομικές μέθοδοι προκαλούν μια σειρά από κοινά προβλήματα όταν δεν είναι σωστά δομημένο . Επίλυση Προβλημάτων αποτυχία
Η

Προγραμματιστές χρήση επαναληπτικών μεθόδων για την επίλυση συγκεκριμένων προβλημάτων . Φυσικά επαναληπτική μέθοδο και δεν θα παρέχει χρήσιμες λειτουργίες , αν δεν λυθεί το πρόβλημα που είχε σχεδιαστεί για . Αυτό συμβαίνει μερικές φορές όταν ο προγραμματιστής έχει επιλέξει να χρησιμοποιήσει μια αναδρομική συνάρτηση όπου δεν είναι κατάλληλο . Σε γενικές γραμμές , μια αναδρομική μέθοδος είναι ιδανική για περιπτώσεις στις οποίες θα πρέπει να λύσουν ένα πρόβλημα χρησιμοποιώντας επαναλαμβανόμενα βήματα . Κάθε φορά που η μέθοδος εκτελεί , θα πρέπει να κάνει το πρόβλημα πιο απλό και να φέρει το πρόγραμμά σας ένα βήμα πιο κοντά στην επίλυση του προβλήματος. Το τελικό αποτέλεσμα της επαναληπτικής μεθόδου θα πρέπει να είναι η λύση στο πρόβλημά σας , όπως για παράδειγμα τον εντοπισμό ενός στοιχείου σε ένα αντικείμενο συλλογής δεδομένων .
Εικόνων Δεν υπόθεση End
Η

Για μια αναδρομική συνάρτηση να εργάζονται χωρίς να πάρει το πρόγραμμά σας κολλήσει σε ένα άπειρο βρόχο , θα πρέπει να έχει ένα καλά καθορισμένο τέλος ούτως ή άλλως . Αυτό σημαίνει ότι θα πρέπει να υπάρξει μια τελική εκτέλεση , και όχι η μέθοδος εκτέλεσης ασταμάτητα . Προγραμματιστές συχνά εφαρμόζουν αυτό χρησιμοποιούν την υπό όρους δηλώσεις μέσα στη μέθοδο , όπως στο ακόλουθο παράδειγμα : public void doItRecursively ( int num ) {if ( num <1 ) επιστροφή? Else { System.out.println ( αριθμός ) ? DoItRecursively ( αριθμός /2 ) ? } }

Για να καλέσετε τη συνάρτηση αυτή , ένα πρόγραμμα μπορεί να χρησιμοποιήσει τον ακόλουθο κώδικα : doItRecursively ( 10 ) ?

στην περίπτωση αυτή η λειτουργία θα εκτελέσει πέντε φορές , την έξοδο από την πέμπτη επανάληψη . Κάθε φορά που η μέθοδος εκτελεί έρχεται πιο κοντά στο τελικό σενάριο , το οποίο εξαρτάται από το εάν οι έλεγχοι δήλωση . Εάν η μέθοδος δεν περιλαμβάνει την υπό όρους δήλωση , θα επαναλάβει ασταμάτητα .

Η αριθ. Αναδρομή
Η

Ο μετρητής θέμα σε ατέλειωτα looping επαναληπτική μέθοδος είναι μια μέθοδος ότι δεν επαναλάβει καθόλου. Αυτό συμβαίνει και όταν η υπό όρους δήλωση δεν είναι σωστά δομημένο . Για παράδειγμα , λαμβάνοντας υπόψη τη μέθοδο " doItRecursively », η ακόλουθη δήλωση αλλάξει, εάν θα μπορούσε να προκαλέσει ένα πρόβλημα : αν ( num > 0 ) επιστροφή?

Αν η μέθοδος καλείται μόνο με θετικές ακέραιες τιμές ως παράμετρο , της περιεχόμενο δεν θα επαναλάβει ως το τελικό σημείο θα έχουν επιτευχθεί αμέσως .
εικόνων Λανθασμένη μέθοδος
Η ζητεί

Αν ο προγραμματιστής καλώντας επαναληπτικής μεθόδου δεν έχουν σαφή αντίληψη της λειτουργία του , μπορούν να τη χρησιμοποιούν με έναν τρόπο που προκαλεί ατελείωτη επανάληψη ή καμία επανάληψη . Για παράδειγμα, ο παρακάτω κώδικας αλλαγμένη όρους στο πλαίσιο της μεθόδου θα μπορούσε εύκολα να ονομάζεται λανθασμένα : if ( num <0 ) επιστροφή?

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

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

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