Go - Rekursion

Rekursion ist der Vorgang des Wiederholens von Elementen auf selbstähnliche Weise. Das gleiche Konzept gilt auch für Programmiersprachen. Wenn ein Programm das Aufrufen einer Funktion innerhalb derselben Funktion zulässt, wird es als rekursiver Funktionsaufruf bezeichnet. Schauen Sie sich das folgende Beispiel an -

func recursion() {
   recursion() /* function calls itself */
}
func main() {
   recursion()
}

Die Programmiersprache Go unterstützt die Rekursion. Das heißt, es ermöglicht einer Funktion, sich selbst aufzurufen. Bei der Verwendung der Rekursion müssen Programmierer jedoch darauf achten, eine Beendigungsbedingung für die Funktion zu definieren, da sie sonst zu einer Endlosschleife wird.

Beispiele für die Rekursion in Go

Rekursive Funktionen sind sehr nützlich, um viele mathematische Probleme zu lösen, z. B. das Berechnen der Fakultät einer Zahl, das Erzeugen einer Fibonacci-Reihe usw.

Beispiel 1: Berechnung des Faktors mithilfe der Rekursion in Go

Das folgende Beispiel berechnet die Fakultät einer bestimmten Zahl mithilfe einer rekursiven Funktion:

package main

import "fmt"

func factorial(i int)int {
   if(i <= 1) {
      return 1
   }
   return i * factorial(i - 1)
}
func main() { 
   var i int = 15
   fmt.Printf("Factorial of %d is %d", i, factorial(i))
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

Factorial of 15 is 1307674368000

Beispiel 2: Fibonacci-Reihe mit Rekursion in Go

Das folgende Beispiel zeigt, wie eine Fibonacci-Reihe einer bestimmten Zahl mithilfe einer rekursiven Funktion generiert wird.

package main

import "fmt"

func fibonaci(i int) (ret int) {
   if i == 0 {
      return 0
   }
   if i == 1 {
      return 1
   }
   return fibonaci(i-1) + fibonaci(i-2)
}
func main() {
   var i int
   for i = 0; i < 10; i++ {
      fmt.Printf("%d ", fibonaci(i))
   }
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

0 1 1 2 3 5 8 13 21 34