2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
rekursiver Algorithmusist eine in der Informatik und Mathematik weit verbreitete Programmiertechnik, die Funktionen ermöglichtDirekteoderindirektLandsich selbst nennen um das Problem zu lösen.rekursivDie GrundideeDabei handelt es sich um die Zerlegung komplexer Probleme in kleinere, ähnliche Teilprobleme, bis diese Teilprobleme einfach genug sind, um direkt gelöst zu werden.
Vorteil: Der Code ist prägnant, die Logik ist klar und er ist leicht zu verstehen und zu schreiben.
Mangel : Möglicherweise weniger effizient als die iterative Lösung, da sie einen höheren Overhead für Funktionsaufrufe mit sich bringt. Darüber hinaus kann eine zu tiefe Rekursion zu Stapelüberlauffehlern führen.
Rekursion findet in vielen Algorithmen Anwendung, zBaumdurchquerung、Grafische Suche、Dynamische Programmierung usw. . Der richtige Einsatz der Rekursion kann die Lösung komplexer Probleme vereinfachen.
def factorial(n):#自定义求n的阶乘函数
if n==1:#判断n=1
return 1#返回1结束
else:#递归条件 即n!=1
return n*factorial(n-1)#递归求阶乘
number = int(input("请输入一个正整数:"))#输入n的值
result = factorial(number)#调用阶乘函数
print("%d 的阶乘是 %d" %(number,result))#输出结果
factorial
Die Funktion erhält einen Parameter n
stellt die Zahl dar, für die die Fakultät berechnet werden soll.Die Fakultät wird ausgedrückt alsn!
, definiert als alles kleiner oder gleich n
Das Produkt positiver Ganzzahlen. Zum Beispiel,5! = 5 × 4 × 3 × 2 × 1 = 120
。
n
Wenn gleich 1, gibt die Funktion direkt 1 zurück. Dies ist die Beendigungsbedingung der Rekursion, da die Fakultät von 1 als 1 definiert ist.n
ungleich 1 ist, wird die Funktion ausgeführtn
Undfactorial(n-1)
Die Ergebnisse werden multipliziert.factorial(n-1)
ist wahrfactorial
FunktionDer Anruf selbst , aber der Parameter wird um 1 reduziert.Dieser Aufruf wird bis fortgesetztn
erreicht 1.Der Schlüssel zur Rekursion besteht darin, dass sich jeder rekursive Aufruf dem Basisfall nähert, schließlich den Basisfall erreicht und anfängt, Werte zurückzugeben. In diesem Beispiel verringert jeder rekursive Aufruf n um 1, bis n 1 wird.
Bei der Rekursion kann es bei der Verarbeitung großer Werte zu Leistungsproblemen oder Stapelüberlauffehlern kommen, da jeder Funktionsaufruf einen Teil des Stapelspeicherplatzes einnimmt. Für einfache mathematische Operationen wie Fakultäten gibt es oft effizientere und speicherfreundlichere iterative Methoden. Allerdings bietet die Rekursion eine elegante und leicht verständliche Möglichkeit, bestimmte Probleme zu lösen.