LU04.L09 - Fakultät mit reduce

from functools import reduce
 
def factorial(n):
    # Ihr Code hier
    if n == 0:
        return 1
    return reduce(lambda x, y: x * y, range(1, n + 1))
 
 
if __name__ == '__main__':
    result = factorial(5)
    print(result)  # Sollte 120 ausgeben

In dieser Lösung verwenden wir die reduce-Funktion aus dem functools-Modul. Die reduce-Funktion nimmt eine Funktion und eine Sequenz als Argumente und reduziert die Sequenz zu einem einzigen Wert, indem sie die Funktion auf die Elemente anwendet.

Im Fall der Fakultät verwenden wir reduce mit einer Lambda-Funktion, die zwei Argumente multipliziert. Die Sequenz, die wir reduzieren wollen, ist range(1, n + 1), was eine Liste von 1 bis \( n \) erzeugt. `reduce` wendet die Multiplikation auf alle Elemente der Sequenz an und gibt das Ergebnis zurück, das die Fakultät von \( n \) ist.


© Kevin Maurizi

  • modul/m323/learningunits/lu04/loesungen/reduce.txt
  • Last modified: 2023/11/13 08:56
  • by 127.0.0.1