# Πρόγραμμα Υπολογισμού Παραγοντικών Αριθμών

# Ορισμός συνάρτησης υπολογισμού του παραγοντικού
# ενός μη αρνητικού ακέραιου αριθμού
# Παράμετρος Εισόδου η μεταβλητή Ν που έχει ως τιμή τον αριθμό αυτό
def paragontiko(N):
    # Έλεγχος εάν η τιμή της μεταβλητής Ν είναι 0 ή 1
    if N==0 or N==1:
        # Εάν είναι 0 ή 1, τότε το apotelesma είναι 1
        apotelesma=1
    else:
        # Εάν δεν είναι 0 ή 1, τότε το αποτέλεσμα είναι το γινόμενο
        # του αριθμού Ν με το αποτέλεσμα της κλήσης της ίδιας συνάρτησης
        # paragontiko() για τον αριθμό Ν-1
        apotelesma= N * paragontiko(N-1)
    # Ως τιμή εξόδου επιστρέφεται η τιμή της μεταβλητής apotelesma 
    return apotelesma

# Εμφάνιση Μηνύματος Καλωσορίσματος
print("Καλώς Ήρθατε στο Πρόγραμμα Υπολογισμού Παραγοντικών Αριθμών")
print()

# Εισαγωγή από τον χρήστη του αριθμού μέχρι το οποίου τα παραγοντικά
# θα υπολογίσει το πρόγραμμα
N_xristi=int(input("Μέχρι ποιου μη αρνητικού ακέραιου αριθμού \
τα παραγοντικά θέλετε να υπολογίσω; "))

# Επανάληψη for με μεταβλητή i η οποία θα λάβει όλους τους ακεραιους
# από το 0 μέχρι και το N_xristi
for i in range(N_xristi+1):
    print("Το παραγοντικό του αριθμού",i,"ισούται με", paragontiko(i))
    
# Εμφάνιση Μηνύματος Τέλους
print()
print("Ευχαριστούμε που χρησιμοποιήσατε το Πρόγραμμα \
Yπολογισμού Παραγοντικών Αριθμών") 
