Προγραμματισμός ΙI (Θ)

Σχετικά έγγραφα
Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ)

Προγραμματισμός ΙI (Θ)

Δομημένος Προγραμματισμός

Προγραμματισμός I (Θ)

Προγραμματισμός ΙI (E)

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις

Προγραμματισμός I (Θ)

Προγραμματισμός I (Θ)

Προγραμματισμός ΙI (Θ)

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Εισαγωγή στον δομημένο προγραμματισμό

Δομημένος Προγραμματισμός (ΤΛ1006)

Προγραμματισμός I (Θ)

Διάλεξη 15η: Αναδρομή, μέρος 1ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Ανάπτυξη και Σχεδίαση Λογισμικού

Δομημένος Προγραμματισμός

Ανάπτυξη και Σχεδίαση Λογισμικού

Εισαγωγή στον Προγραμματισμό με C++

Προγραμματισμός II. Συναρτήσεις

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Προγραμματισμός ΙI (E)

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

Δομημένος Προγραμματισμός (ΤΛ1006)

τις αναδρομικές ακολουθίες (recursive sequences) στις οποίες ορίζαμε

Εισαγωγή στον Προγραμματισμό

Διδακτική της Πληροφορικής ΙΙ

Προγραμματισμός I (Θ)

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Δομημένος Προγραμματισμός

ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Χρήστος Ι. Σχοινάς Αν. Καθηγητής ΔΠΘ. Συμπληρωματικές σημειώσεις για το μάθημα: «Επιχειρησιακή Έρευνα ΙΙ»

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός ΙI (E)

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

z = c 1 x 1 + c 2 x c n x n

Προγραμματισμός I (Θ)

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

Προγραμματισμός Ι. Συναρτήσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον

Προγραμματισμός I (E)

Δομημένος Προγραμματισμός (ΤΛ1006)

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Προγραμματισμός Η/Υ (ΤΛ2007 )

Βασικές Έννοιες Αλγορίθμων. Βασικές Εντολές Αλγορίθμων (Κεφ. 2ο Παρ. 2.4)

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Μεθόδων Επίλυσης Προβλημάτων

Διαδικασιακός Προγραμματισμός

ΚΕΦΑΛΑΙΟ 2: Τύποι δεδομένων και εμφάνιση στοιχείων...33

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ ΓΛΩΣΣΟΜΑΘΕΙΑ

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Κεφάλαιο 10 ο Υποπρογράµµατα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Προγραμματισμός I (E)

Αναδρομικός αλγόριθμος

Ανάπτυξη και Σχεδίαση Λογισμικού

Διαδικασιακός Προγραμματισμός

for for for for( . */

{ int a = 5; { int b = 7; a = b + 3;

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

Διαδικασιακός Προγραμματισμός

Ηβασικήσυνάρτηση προγράμματος main()

Γεώργιος Δ. Παλτεζανάκης

Περιεχόμενα. Πρόλογος...11

Πληροφορική II. Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι. τύποι δεδομένων. Δρ. Γκόγκος Χρήστος

Κεφάλαιο 10 Υποπρογράμματα. Καραμαούνας Πολύκαρπος

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

ΘΕΜΑ 1 ο. β) 1. δυαδική 2. κατανόηση 3. τυπικοί 4. τεχνητής νοημοσύνης 5. ακέραιου

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

ΠΕΡΙΕΧΟΜΕΝΑ Τμηματικός προγραμματισμός Χαρακτηριστικά των υποπρογραμμάτων Πλεονεκτήματα του τμηματικού προγραμματισμού Παράμετροι Διαδικασίες και

Η βασική συνάρτηση προγράμματος main()

Συναρτήσεις. Υποπρόγραμμα

ΟΜΟΣΠΟΝΔΙΑ ΕΚΠΑΙΔΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑΔΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2019 Β ΦΑΣΗ Γ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ

Εισαγωγή στην πληροφορική

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

Υπολογιστικά & Διακριτά Μαθηματικά

Προγραμματισμός I (Θ)

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Επικοινωνία:

Προγραµµατιστικές Τεχνικές

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

Transcript:

Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 1 / 29 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (Θ) 1 Τύποι Συναρτήσεων Αναδρομικές συναρτήσεις 2 Εμβέλεια μεταβλητών Καθολικές μεταβλητές (global variables) Εμβέλεια μεταβλητών (scope) Διάρκεια μεταβλητών 3 Παραδείγματα Παράδειγμα 1: Συνάρτηση με επιστρεφόμενη τιμή Παράδειγμα 2: Συνάρτηση χωρίς επιστρεφόμενη τιμή Παράδειγμα 3: Συνάρτηση με είσοδο πίνακα Παράδειγμα 4: Δημιουργία αναδρομικής συνάρτησης Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 2 / 29

Αναδρομικές συναρτήσεις I Αναδρομικές, λέγονται οι συναρτήσεις που καλούν τον εαυτό τους. Οι αναδρομικές συναρτήσεις περιέχουν πιο συμπαγή κώδικα, είναι ιδιαίτερα χρήσιμες για λίστες, δέντρα κ.α. Προσοχή, οι αναδρομικές συναρτήσεις έχουν το πλεονέκτημα της εύκολης συγγραφής του κώδικα αλλά, η κακή-άσκοπη χρήση τους μπορεί να οδηγήσει σε υπερχείλιση και στη υπερβολική καθυστέρηση στον χρόνο εκτέλεσης του προγράμματος Για την δήλωση και την κατασκευή των αναδρομικών συναρτήσεων ισχύει ότι είπαμε παραπάνω για τις συναρτήσεις με επιστρεφόμενη τιμή. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 3 / 29 Αναδρομικές συναρτήσεις II Η μόνη και βασική διαφορά είναι ότι οι αναδρομικές συναρτήσεις περιέχουν μια συνθήκη τερματισμού. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 4 / 29

Αναδρομικές συναρτήσεις I Ας δούμε όμως ένα παράδειγμα για να καταλάβουμε καλύτερα τι είναι μία αναδρομική συνάρτηση: Ο υπολογισμός του αθροίσματος S n = 1 + 2 + 3 +... + n υλοποιείται σειριακά με τον ακόλουθο τρόπο (με χρήση συνάρτησης) Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 5 / 29 Αναδρομικές συναρτήσεις II Θα μπορούσαμε να υπολογίσουμε το άθροισμα με τον εξής τρόπο { 1 n = 1 S n = n + S n 1 n > 1 ο οποίος υλοποιείται με τον ακόλουθο τρόπο (με χρήση συνάρτησης) Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 6 / 29

Αναδρομικές συναρτήσεις I Παρατηρούμε λοιπόν ότι, και στις δυο περιπτώσεις έχουμε μια συνάρτηση που υπολογίζει το άθροισμα. Μια διαφορά που έχουν μεταξύ τους είναι η συνθήκη τερματισμού. Δίνουμε μεγάλη βάση ώστε να υπάρχει πάντα συνθήκη τερματισμού στις αναδρομικές συναρτήσεις γιατί αλλιώς η συνάρτηση μας δεν θα τερματιστεί. Μια άλλη διαφορά που έχουν μεταξύ τους είναι ο ξεκάθαρος κώδικας που έχει η αναδρομική συνάρτηση. Ο κώδικας ακολουθεί ακριβώς την μαθηματική μοντελοποίηση του προβλήματος. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 7 / 29 Καθολικές μεταβλητές (global variables) I Δηλώνονται πριν τη. Εφαρμόζονται σε όλα τα τμήματα ενός προγράμματος. Όταν μεταβάλλεται η τιμή μίας καθολικής μεταβλητής σε οποιοδήποτε σημείο του προγράμματος, η νέα τιμή μεταφέρεται σε όλο το υπόλοιπο πρόγραμμα. Οι καθολικές μεταβλητές είναι μία κακή ιδέα, καθώς αποτρέπουν τον ξεκάθαρο μερισμό του προβλήματος σε ανεξάρτητα τμήματα. Για μία τοπική μεταβλητή ο χώρος στη μνήμη δεσμεύεται μόλις ο έλεγχος περάσει στη συνάρτηση, αποδεσμεύεται δε με το τέλος αυτής, οπότε και η μεταβλητή δεν έχει πλέον νόημα. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 8 / 29

Εμβέλεια μεταβλητών (scope) I Εμβέλεια προγράμματος: μεταβλητές αυτής της εμβέλειας είναι οι καθολικές. Είναι ορατές από όλες τις συναρτήσεις του προγράμματος, έστω κι αν βρίσκονται σε διαφορετικά αρχεία πηγαίου κώδικα. Εμβέλεια αρχείου: μεταβλητές αυτής της εμβέλειας είναι ορατές μόνο στο αρχείο που δηλώνονται και μάλιστα από το σημείο της δήλωσής τους και κάτω. Μεταβλητή που δηλώνεται με τη λέξη κλειδί πριν από τον τύπο, έχει εμβέλεια αρχείου, π.χ.. Εμβέλεια συνάρτησης: Προσδιορίζει την ορατότητα του ονόματος από την αρχή της συνάρτησης έως το τέλος της. Εμβέλεια συνάρτησης έχουν μόνο οι ετικέτες. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 9 / 29 Εμβέλεια μεταβλητών (scope) II Εμβέλεια μπλοκ: Προσδιορίζει την ορατότητα από το σημείο δήλωσης έως το τέλος του μπλοκ στο οποίο δηλώνεται. Μπλοκ είναι ένα σύνολο από προτάσεις, οι οποίες περικλείονται σε άγκιστρα. Μπλοκ είναι η σύνθετη πρόταση αλλά και το σώμα συνάρτησης. Εμβέλεια μπλοκ έχουν και τα τυπικά ορίσματα των συναρτήσεων. Η C επιτρέπει τη χρήση ενός ονόματος για την αναφορά σε διαφορετικά αντικείμενα, με την προϋπόθεση ότι αυτά έχουν διαφορετική εμβέλεια ώστε να αποφεύγεται η σύγκρουση ονομάτων (name conflict). Εάν οι περιοχές εμβέλειας έχουν επικάλυψη, τότε το όνομα με τη μικρότερη εμβέλεια αποκρύπτει (hides) το όνομα με τη μεγαλύτερη. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 10 / 29

Διάρκεια μεταβλητών (duration) I Η διάρκεια ορίζει το χρόνο κατά τον οποίο το όνομα της μεταβλητής είναι συνδεδεμένο με τη θέση μνήμης που περιέχει την τιμή της μεταβλητής. Ορίζονται ως χρόνοι δέσμευσης και αποδέσμευσης οι χρόνοι που το όνομα συνδέεται με και αποσυνδέεται από τη μνήμη, αντίστοιχα. Για τις καθολικές μεταβλητές δεσμεύεται χώρος με την έναρξη εκτέλεσης του προγράμματος και η μεταβλητή συσχετίζεται με την ίδια θέση μνήμης έως το τέλος του προγράμματος. Είναι πλήρους διάρκειας. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 11 / 29 Διάρκεια μεταβλητών (duration) II Οι τοπικές μεταβλητές είναι περιορισμένης διάρκειας. Η ανάθεση της μνήμης σε τοπική μεταβλητή γίνεται με τη είσοδο στο χώρο εμβέλειάς της και η αποδέσμευσή της με την έξοδο από αυτόν. Δηλαδή η τοπική μεταβλητή δε διατηρεί την τιμή της από τη μία κλήση της συνάρτησης στην επόμενη. Εάν όμως προστεθεί στη δήλωση μίας τοπικής μεταβλητής η λέξη static, διατηρεί την τιμή της και καθίσταται πλήρους διάρκειας. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 12 / 29

Καθολικές μεταβλητές - Παράδειγμα I Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 13 / 29 Καθολικές μεταβλητές - Παράδειγμα II Παρατηρούμε λοιπόν ότι δηλώνοντας με αυτόν τον τρόπο τις μεταβλητές μας αποκτούν πρόσβαση σε αυτήν όλες οι συναρτήσεις του προγράμματος. Στο συγκεκριμένο παράδειγμα το κυρίως πρόγραμμα δίνει μια τιμή στην μεταβλητή και την εμφανίζει, έπειτα καλεί την συνάρτηση η οποία αυξάνει την τιμή της μεταβλητής κατά ένα και τέλος το κυρίως πρόγραμμα εμφανίζει την καινούργια τιμή της μεταβλητής. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 14 / 29

Παράδειγμα 1: Συνάρτηση με επιστρεφόμενη τιμή I Να δημιουργηθεί πρόγραμμα το οποίο θα: δημιουργεί μια συνάρτηση δέχεται στο κυρίως πρόγραμμα δύο τιμές από τον χρήστη και θα κάνει έλεγχο για το αν οι τιμές είναι διάφορες του μηδενός (0) καλεί την συνάρτηση που δημιουργήσαμε για να πάρει τις τιμές και να βρει την διαφορά τους. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 15 / 29 Παράδειγμα 1: Συνάρτηση με επιστρεφόμενη τιμή I Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 16 / 29

Παράδειγμα 1: Συνάρτηση με επιστρεφόμενη τιμή II Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 17 / 29 Παράδειγμα 2: Συνάρτηση χωρίς επιστρεφόμενη τιμή I Να δημιουργηθεί πρόγραμμα το οποίο θα: κάνει χρήση καθολικής μεταβλητής δημιουργεί μια συνάρτηση η οποία δεν θα δέχεται καμία τιμή, αλλά θα αυξάνει την τιμή της καθολικής μεταβλητής κατά ένα (1) και θα την εμφανίζει στον χρήστη το κυρίως πρόγραμμα θα εκχωρεί μια τιμή στην καθολική μεταβλητή θα την εμφανίζει και μετά θα καλεί την συνάρτηση. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 18 / 29

Παράδειγμα 2: Συνάρτηση χωρίς επιστρεφόμενη τιμή I Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 19 / 29 Παράδειγμα 2: Συνάρτηση χωρίς επιστρεφόμενη τιμή II Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 20 / 29

Παράδειγμα 3: Συνάρτηση με είσοδο πίνακα Να δημιουργηθεί πρόγραμμα το οποίο θα: αρχικοποιεί τις τιμές ενός πίνακα και θα τις εμφανίζει χρησιμοποιεί μια συνάρτηση χωρίς έξοδο η οποία θα διαβάζει τις τιμές του πίνακα και θα τις εμφανίζει και θα εμφανίζει (στην ) τις τιμές του πίνακα. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 21 / 29 Παράδειγμα 3: Συνάρτηση με είσοδο πίνακα I Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 22 / 29

Παράδειγμα 3: Συνάρτηση με είσοδο πίνακα II Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 23 / 29 Παράδειγμα 3: Συνάρτηση με είσοδο πίνακα Στο παραπάνω πρόγραμμα παρατηρούμε ότι, ο πίνακας έχει αρχικές τιμές οι οποίες αλλάζουν μέσα στην συνάρτηση και μεταφέρονται. Η χρήση πίνακα είναι ένας εναλλακτικός τρόπος να μας επιστρέψει μια συνάρτηση περισσότερες από μια τιμές. Για να επιστρέψουμε τιμές μέσω πίνακα από μια συνάρτηση πρέπει ο πίνακας να είναι όρισμα (μεταβλητή εισόδου) της συνάρτησης. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 24 / 29

Παράδειγμα 4: Δημιουργία αναδρομικής συνάρτησης I Να δημιουργηθεί πρόγραμμα το οποίο θα: υπολογίζει την ακολουθία Fibonacci κάνοντας χρήση αναδρομικής συνάρτησης 0 n = 1 F n = 1 n = 2 F n 1 + F n 2 n > 2 καλεί και θα εμφανίζει τα αποτελέσματα μέσα από την Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 25 / 29 Παράδειγμα 4: Δημιουργία αναδρομικής συνάρτησης II Η ακολουθία Fibonacci η οποία πήρε το όνομα της από τον Λεονάρντο της Πίζας γνωστό και ως Fibonacci είναι μία ακολουθία ακέραιων αριθμών. Οι πρώτοι δύο αριθμοί της ακολουθίας είναι πάντα το 0 και το 1 και η αρχή της ορίζεται από έναν αναδρομικό τύπο. Κάθε επόμενος αριθμός προκύπτει από το άθροισμα των δύο προηγούμενων και η διαδικασία αυτή επαναλαμβάνεται από την ίδια την συνάρτηση. Αυτή είναι και η έννοια της αναδρομής, κάθε οριζόμενη συνάρτηση επαναλαμβάνεται ή ορίζεται στον ίδιο της στον εαυτό. Για αυτόν τον λόγο λοιπόν, κάθε φορά που θέλουμε να υπολογίσουμε κάτι το οποίο απαιτεί κατ εξακολούθηση επανάληψη Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 26 / 29

Παράδειγμα 4: Δημιουργία αναδρομικής συνάρτησης III της αρχικής συνάρτησης ώστε να φτάσουμε στο ζητούμενο αποτέλεσμα χρησιμοποιούμε αναδρομικές συναρτήσεις. Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 27 / 29 Παράδειγμα 4: Δημιουργία αναδρομικής συνάρτησης I Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 28 / 29

Παράδειγμα 4: Δημιουργία αναδρομικής συνάρτησης II Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017 29 / 29