Τώρα είναι Πέμ 28 Μαρ 2024 08:12 pm

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 1 Δημοσίευση ] 
Συγγραφέας Μήνυμα
ΔημοσίευσηΔημοσιεύτηκε: Παρ 16 Μαρ 2007 05:16 am 
Χωρίς σύνδεση
Διαχειριστής

Εγγραφή: Παρ 28 Φεβ 2003 06:10 pm
Δημοσιεύσεις: 84
Η τεχνική της αναδρομής είναι εκτός ύλης ΑΕΠΠ (αν και τα πρώτα χρόνια ήταν εντός).
Ουσιαστικά πρόκειται για τις περιπτώσεις που κάποιο υποπρόγραμμα καλεί τον εαυτό του.
Με το παρακάτω παράδειγμα μπορείτε να δείτε με πολύ εποπτικό τρόπο τη "στοίβα κλήσεων", δηλαδή τις συνεχόμενες εμφωλευμένες εκτελέσεις της συνάρτησης Παραγοντικό.
Απλά βάλτε ένα σημείο διακοπής στη γραμμή 24 ("Παραγοντικό <-- 1") και εκτελέστε δίνοντας για είσοδο π.χ. 5.
Έτσι η εκτέλεση θα παγώσει κατά την τελευταία κλήση της συνάρτησης (δηλ. όταν α=1) και θα μπορείτε να παρατηρήσετε τη στοίβα κλήσεων με τη συνεχώς μειούμενη παράμετρο α.
Μετά το σημείο διακοπής οι εκτελέσεις της Παραγοντικό θα ολοκληρώνονται η μία μετά την άλλη και η στοίβα κλήσεων θα συρρικνωθεί στην αρχική της μορφή.
(Εναλλακτικά μπορείτε να μειώσετε λίγο την ταχύτητα εκτέλεσης.)
Νομίζω ότι είναι αρκετά εντυπωσιακό όταν το βλέπεις τόσο παραστατικά...

Syntax: [ Download ] [ Hide ]
ΠΡΟΓΡΑΜΜΑ Επίδειξη_Αναδρομικής_Τεχνικής_στην_Έκδοση_Διερμηνευτή

ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: χ

ΑΡΧΗ

  ΓΡΑΨΕ 'Δώσε έναν αριθμό:'
  ΔΙΑΒΑΣΕ χ

  ΓΡΑΨΕ 'Το παραγοντικό του είναι:', Παραγοντικό(χ)

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ Επίδειξη_Αναδρομικής_Τεχνικής_στην_Έκδοση_Διερμηνευτή

!-----------------------------------------------------------------------

ΣΥΝΑΡΤΗΣΗ Παραγοντικό(α): ΑΚΕΡΑΙΑ

ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: α
ΑΡΧΗ

  ΑΝ α=1 ΤΟΤΕ
    Παραγοντικό <-- 1
  ΑΛΛΙΩΣ
    Παραγοντικό <-- Παραγοντικό(α-1) * α
  ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ
 


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
Τελευταίες δημοσιεύσεις:  Ταξινόμηση ανά  
Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 1 Δημοσίευση ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 4 επισκέπτες


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επισυνάπτετε αρχεία σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
Προβολές: