rekursive Variante
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# Berechnung der Fakultät - rekursiv
print("Berechnung der Fakultät einer ganzen")
print("Zahl mit einem rekursiven Algorithmus")
print("=====================================")
print(" ")
# Eingabe
print("Eingabe der ganzen Zahl:")
print("------------------------")
zahl = int(input("ganze Zahl: "))
start = 1
# Rekursion als Funktion
def Fak_rek(wert):
if wert == start:
return wert
else:
print("rekursiver Aufruf mit:",str(wert))
return Fak_rek(wert-1) * wert
# Funktionsaufruf und Ausgabe
print(" ")
print("Ergebnis:")
print("---------")
if zahl > 997:
print("Die Anzahl der erforderlichen Rekursionen ist zu hoch!")
print("(Die Eingabe muss kleiner als 998 sein!)")
else:
print("Die Fakultät der Zahl", zahl, "ist", str(Fak_rek(zahl)) + ".")
iterative Variante
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# Berechnung der Fakultät - iterativ
print("Berechnung der Fakultät einer ganzen")
print("Zahl mit einem iterativen Algorithmus")
print("=====================================")
print(" ")
# Eingabe
print("Eingabe der ganzen Zahl:")
print("------------------------")
zahl = int(input("ganze Zahl: "))
# Iteration als Funktion
def Fak_it(wert):
ergebnis = 1
for i in range(1,wert+1):
ergebnis = ergebnis * i
print("Zwischenergebnis bei Schleifendurchlauf", str(i) + ":",str(ergebnis))
return ergebnis
# Funktionsaufruf und Ausgabe
print(" ")
print("Ergebnis:")
print("---------")
print("Die Fakultät der Zahl", zahl, "ist", str(Fak_it(zahl)) + ".")