Ein Artikel, der Ihnen hilft, rekursive Python-Funktionen zu verstehen

Freigeben: 2023-07-25 16:43:25
nach vorne
1385 Leute haben es durchsucht

1. Was ist eine rekursive Funktion?

Innerhalb einer Funktion können Sie andere Funktionen aufrufen. Eine Funktion ist rekursiv, wenn sie sich selbst intern aufruft. 2. Prinzip des rekursiven Aufrufs von Funktionen


Die Größe des Stapelspeichers ist ein wichtiger Faktor für die Begrenzung der Rekursionstiefe

Berechnen Sie die Fakultät n! = 1 x 2 x 3 x … x n,
  • kann durch die Funktion fact(n) dargestellt werden.

  • fact(n) = n! = 1 x 2 x 3 x … x (n-1) x n = (n-1)! x n = fact(n-1) x n
    Nach dem Login kopieren
  • fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。
    Nach dem Login kopieren

    Fact(n) wird also rekursiv geschrieben:

    def fact(n):    if n == 1:        return 1    return n * fact(n - 1)
    Nach dem Login kopieren

    如果计算fact(6),可以根据函数定义看到计算过程如下:

    def fac(n):    if n==1:        return 1    else:        res=n*fac(n-1)        return  res
    print(fac(6))
    Nach dem Login kopieren

    运行结果:

    Ein Artikel, der Ihnen hilft, rekursive Python-Funktionen zu verstehen

    1. 斐波拉契级数

    有这样一个数列:1,1,2,3,5,8,13,21,34…。其第一元素和第二个元素等于 1,其他元素等于其前面两个元素的和。

    例:

    def fab(n):  # 定义斐波拉契级数    if n in [1, 2]:  # 如果n=1或者2      return 1    return fab(n - 1) + fab(n - 2)  # n>2
    
    print(fab(1))  # 斐波拉契级数的第一个元素
    print(fab(2))  # 斐波拉契级数的第二个元素
    print(fab(8))  # 斐波拉契级数的第8个元素print(fab(13))  # 斐波拉契级数的第9个元素
    Nach dem Login kopieren

    运行结果:

    Ein Artikel, der Ihnen hilft, rekursive Python-Funktionen zu verstehen

    1. 递归函数的优点

    定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

    递归需要注意递归的深度。由于递归会产生多次函数调用,而函数调用会消耗代码的栈空间,如果递归的深度太大,会导致栈溢出。以上面的阶乘为例,如果计算 100000 的阶乘,在一般机器上都会出现栈溢出的问题。

    print(fac(10000))
    Nach dem Login kopieren

    如下所示:

    Ein Artikel, der Ihnen hilft, rekursive Python-Funktionen zu verstehen


    4. Zusammenfassung

    Dieser Artikel basiert auf Python-Grundlagen. Der Standardinterpreter von Python ist nicht für die Schwanzrekursion optimiert und jede rekursive Funktion weist einen Stapelüberlauf auf. In diesem Artikel werden die Vor- und Nachteile der Verwendung rekursiver Funktionen vorgestellt. Der Vorteil besteht darin, dass die Logik einfach und klar ist, der Nachteil besteht jedoch darin, dass übermäßige Aufrufe zu einem Stapelüberlauf führen können.

Das obige ist der detaillierte Inhalt vonEin Artikel, der Ihnen hilft, rekursive Python-Funktionen zu verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:Go语言进阶学习
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage