17 Μαρτίου 2019

Αναδρομικές συναρτήσεις

Αναδρομική λέγεται μια συνάρτηση που για να επιστρέψει το αποτέλεσμα που επιθυμούμε καλεί τον εαυτό της. Για παράδειγμα το παραγοντικό ενός ακέραιου θετικού αριθμού είναι ν!=1*2*.....*(ν-1)*ν
π.χ. 5!=1*2*3*4*5 και μπορεί να γραφτεί ν!=ν*(ν-1)! , 5!=4!*5

Παραδείγματα αναδρομικών συναρτήσεων στην Python

#Αναδρομικές συναρτήσεις
def factorial(n):
    p=1
    if n>=2:
        p=n*factorial(n-1)
    return p
def power(x,y):
    p=1
    if y>=1:
        p=x*power(x,y-1)
    return p

Παραδείγματα σε αρχείο python

9 Φεβρουαρίου 2019

Συνδυαστική άσκηση επιλογής, συνάρτησης, συμβολοσειρών, λιστών και αλγορίθμων


Ένα υποκατάστημα σούπερ μάρκετ έχει δημιουργήσει δύο λίστες για τα προϊόντα που πουλάει. Στη πρώτη  λίστα, με όνομα bcodes, είναι οι γραμμωτοί κωδικοί των προϊόντων (bar codes) σε μορφή συμβολοσειράς και στη δεύτερη, με όνομα sales, είναι οι αντίστοιχες συνολικές πωλήσεις των προϊόντων σε ευρώ (€) για το έτος 2018.





Π.χ.
bcodes [‘5201171000126’,’6901100341234’,…….,’8300112291033’],
sales  [1253,3872,…………..,7812]
Οι δύο λίστες έχουν ακριβώς τις ίδιες θέσεις.
Οι αντίστοιχες θέσεις της κάθε λίστας αναφέρονται στο ίδιο προϊόν.

Ο διευθυντής του υποκαταστήματος ζήτησε από τον προγραμματιστή να δημιουργήσει μια συνάρτηση σε python, με παραμέτρους τις δύο λίστες (bcodes,sales), που να αναζητά στην πρώτη λίστα τα ελληνικά προϊόντα, γνωρίζοντας ότι οι ελληνικοί γραμμωτοί κωδικοί ξεκινούν από ‘520’, και να βάζει τους ελληνικούς κωδικούς σε μια λίστα grcodes και τις αντίστοιχες πωλήσεις σε μια λίστα grsales. Στη συνέχεια θα ταξινομεί τις δύο λίστες grcodes και grsales σε φθίνουσα σειρά (από τις μεγαλύτερες προς τις μικρότερες) σύμφωνα με τις πωλήσεις και θα τις επιστρέφει (return) σε μορφή λίστας με δύο υπολίστες [grcodes,grsales].