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