Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielanalyse der Definition und Verwendung rekursiver Python-Funktionen

Beispielanalyse der Definition und Verwendung rekursiver Python-Funktionen

黄舟
黄舟Original
2017-06-04 10:12:411649Durchsuche

Dieser Artikel stellt hauptsächlich die Definition und Verwendung der Pythonrekursiven Funktion vor und analysiert die Prinzipien, Implementierungstechniken und zugehörigen Hinweise, Freunde in Not können sich auf

beziehen. Dieser Artikel erklärt die Definition und Verwendung rekursiver Python-Funktionen anhand von Beispielen. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Rekursive Funktion

Innerhalb der Funktion können Sie andere Funktionen aufrufen. Eine Funktion ist rekursiv, wenn sie sich selbst intern aufruft.

Lassen Sie uns zum Beispiel die Fakultät n! = 1 * 2 * 3 * ... * n berechnen, dargestellt durch die Funktion fact(n). Es ist zu sehen:

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

Fakt(n) kann also als n * Fakt(n-1) ausgedrückt werden, und nur n=1 erfordert eine Sonderbehandlung.

Die rekursiv geschriebene Tatsache(n) lautet also:

def fact(n):
if n==1:
  return 1
return n * fact(n - 1)
Das Obige ist eine rekursive Funktion. Sie können Folgendes versuchen:

>>> fact(1)
1
>>> fact(5)
120
>>> fact(100)
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000L
Wenn wir Fakt (5) berechnen, können Sie den Berechnungsprozess gemäß der Funktionsdefinition wie folgt sehen:

===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120
Der Vorteil rekursiver Funktionen ist dass sie einfach in der Definition und klar in der Logik sind. Theoretisch können alle rekursiven Funktionen in Form einer

Schleife geschrieben werden, aber die Logik von Schleifen ist nicht so klar wie die von Rekursionen.

Achten Sie darauf, einen Stapelüberlauf zu verhindern, wenn Sie rekursive Funktionen verwenden. In Computern werden Funktionsaufrufe über die Datenstruktur des Stapels implementiert. Immer wenn ein Funktionsaufruf eingegeben wird, wird dem Stapel ein Stapelrahmen hinzugefügt. Da die Größe des Stapels nicht unendlich ist, führen zu viele rekursive Aufrufe zu einem Stapelüberlauf. Sie können versuchen, fact(10000) zu berechnen.

Das obige ist der detaillierte Inhalt vonBeispielanalyse der Definition und Verwendung rekursiver Python-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn