Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die mathematische Fakultät n in Python!

So implementieren Sie die mathematische Fakultät n in Python!

WBOY
WBOYnach vorne
2023-05-11 08:40:054036Durchsuche

Python-Implementierung der faktoriellen Basisversion

Was ist faktoriell?

In mathematischen Operationen stellt n! das 阶乘 von n dar, das durch die mathematische Formel dargestellt wird:

n!=1*2*3*.. ..* (n-1)*n

Ein Beispiel finden Sie unten: Zum Beispiel die Fakultät von 5

# 正确的结果

1*2*3*4*5

Das korrekte Ergebnis ist: 120

#🎜🎜 #Der Editor bietet Ihnen drei verschiedene Methoden zum Implementieren faktorieller Operationen:

  • Kumulative Multiplikation basierend auf for-Operation#🎜🎜 #

  • Basierend auf rekursiver Funktionsimplementierung
  • Reduzierte Funktionsimplementierung basierend auf Bibliotheksfunktools von Drittanbietern
  • #🎜 🎜#

    # 🎜🎜#Methode 1 – Kumulative Multiplikation

    result = 1  # 给定一个初始值
    n = 5
    
    for i in range(1, n+1):
        print("累乘前result: ", result)
        print("循环数i的值: ", i)
        result = result * i  # 不断地累成result
        print("累乘后result: ", result)
        print("------------")
    
    result
Ergebnis vor kumulativer Multiplikation: 1

Wert der Schleifennummer i: 1

Ergebnis nach kumulativer Multiplikation: 1#🎜 🎜#----------------
Ergebnis vor kumulativer Multiplikation: 1

Wert der Zyklusnummer i: 2
Ergebnis nach kumulativer Multiplikation: 2
- -----------
Ergebnis vor kumulativer Multiplikation: 2
Wert der Zyklusnummer i: 3
Ergebnis nach kumulativer Multiplikation: 6
---- --------
Ergebnis vor kumulativer Multiplikation: 6
Wert der Zyklusnummer i: 4
Ergebnis nach kumulativer Multiplikation: 24
------ -----
Ergebnis vor kumulativer Multiplikation: 24
Wert der Zyklusnummer i: 5
Ergebnis nach kumulativer Multiplikation: 120
--------- --

Das Ergebnis ist: 120


Methode 2 – Rekursive Funktion verwenden

def recursion(n):
    if n == 0 or n == 1:  # 特殊情况
        return 1
    else:
        return n * recursion(n-1)  # 递归函数
rrree#🎜🎜 #
120

Methode 3 – Funktion von Bibliotheks-Funktools von Drittanbietern reduzieren

recursion(5)

120

#🎜🎜 #
Erklärung der Verwendung der Reduzierungsfunktion:

# 在python3中reduce函数被移入到functools中;不再是内置函数

from functools import reduce 

n = 5

reduce(lambda x,y: x*y, range(1,n+1))

Sie müssen eine auszuführende Funktion angeben (oben ist eine anonyme Funktion oder eine benutzerdefinierte Funktion). Funktion)

# 🎜🎜#Gegebenes iterierbares Objekt iterierbar

  • Optionaler Initialisierer

  • # 🎜🎜#
    reduce(function, iterable[, initializer])
  • # 🎜🎜#15

    # 使用自定义函数
    
    from functools import reduce 
    
    number = range(1,6)
    # number = [1,2,3,4,5]
    
    def add(x,y):
        return x+y
    
    reduce(add, number)  # 1+2+3+4+5
  • 15

  • Python implementiert ial Akkumulation und Summation- erweiterte Version
#🎜 🎜#Das Folgende ist eine erweiterte Anforderung:
Wie implementiert man die kumulative Summe von Fakultäten? #🎜🎜 ## 🎜🎜#
# 使用匿名函数

from functools import reduce 

number = range(1,6)

reduce(lambda x,y: x+y, number)  # 1+2+3+4+5

Das richtige Ergebnis ist 153#🎜🎜 ## 🎜🎜##Methode 1 - kumulative Multiplikation+Summe

# 求出下面的阶乘的累加求和

1 + 1*2 + 1*2*3 + 1*2*3*4 + 1*2*3*4*5
#🎜🎜 ## 🎜🎜#120#🎜🎜 #
Das Obige ist die Fakultät einer einzelnen Zahl, die wir implementiert haben, um die kumulative Summe zu ermitteln:

# 定义累乘函数

def func(n):
    result = 1
    
    for i in range(1, n+1):
        result = result * i  # 不断地累成re
          
    return result
    
func(5)  # 测试案例

153#🎜🎜 ##?? 🎜## ## 153#🎜🎜 #

Methode 4 – Reduzieren kombiniert mit Summe

# func(1) + func(2) + func(3) +  func(4) + func(5)

# 调用累乘函数
sum(func(i)  for i in range(1,6))
120

Einzelanruf an die Reduzierfunktion, kombiniert mit einer For-Schleife. Summe mit Summe

# 定义累乘函数

def func(n):
    result = 1  # 定义初始值
    
    for i in range(1, n+1):
        result = result * i  # 不断地累成re
    
    # if result == 1 :  等价于下面的条件
    if n==0 or n==1:
        return 1
    else:  # 下面是关键代码
        return result + func(n-1)  #在这里实现递归 func(n-1)
    
func(5)

153

Methode 5 – zweimalige Reduzierfunktion

def recursion(n):
    """
    之前定义的递归函数
    """
    if n == 0 or n == 1:
        return 1
    else:
        return n * recursion(n-1)
#🎜 🎜#

[1, 2, 6, 24, 120]

Übergeben Sie das obige Ergebnis erneut als iterierbare Liste an die Ausführungsfunktion die Summe zweier Elemente.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die mathematische Fakultät n in Python!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen