Heim >Backend-Entwicklung >Golang >Golang implementiert Fakultät
Fakultät ist ein gängiges Konzept in der Mathematik, das das Produkt einer positiven ganzen Zahl n und aller positiven ganzen Zahlen davor darstellt, also n!. Auch in der Computerprogrammierung ist die Fakultät ein gängiger Algorithmus, der häufig bei Rechenproblemen wie statistischen Permutationen und Kombinationen verwendet wird.
In diesem Artikel wird erläutert, wie Sie mit der Go-Sprache den faktoriellen Algorithmus implementieren, einschließlich Iteration und Rekursion.
Iteration bezieht sich auf die wiederholte Ausführung eines Algorithmus, wobei die Berechnung jedes Mal auf dem vorherigen Ergebnis basiert. Wenn wir die iterative Methode zur Implementierung der Fakultät verwenden, müssen wir nur bei 1 beginnen und mit n multiplizieren.
Das Folgende ist der iterative Algorithmuscode für die faktorielle Implementierung mithilfe der Go-Sprache:
func factorialIterative(n int) int { result := 1 for i := 1; i <= n; i++ { result *= i } return result }
In dieser Funktion verwenden wir die Ergebnisvariable, um das berechnete Produkt zu speichern, es einzeln von 1 bis n zu multiplizieren und schließlich das Ergebnis zurückzugeben.
Rekursion bedeutet, dass eine Funktion sich selbst aufruft und nicht stoppt, bis eine bestimmte Bedingung erreicht ist. Es ist auch sehr einfach, eine faktorielle Rekursion zu implementieren. Wir müssen das Problem lediglich in kleinere Teilprobleme aufteilen und so lange rekursieren, bis wir zum Basisfall gelangen.
Das Folgende ist der rekursive Algorithmuscode zum Implementieren von Fakultäten mithilfe der Go-Sprache:
func factorialRecursive(n int) int { if n <= 1 { return 1 } else { return n * factorialRecursive(n-1) } }
In dieser Funktion prüfen wir zunächst, ob n kleiner oder gleich 1 ist, und wenn ja, geben wir 1 zurück. Andernfalls multiplizieren wir n mit dem Rückgabewert dieser Funktion und greifen auf den Fall zurück, in dem n gleich 1 ist. factorialRecursive(n-1)
func benchmarkFactorial(b *testing.B, f func(int) int) { for i := 0; i < b.N; i++ { f(20) } } func BenchmarkFactorialIterative(b *testing.B) { benchmarkFactorial(b, factorialIterative) } func BenchmarkFactorialRecursive(b *testing.B) { benchmarkFactorial(b, factorialRecursive) }In diesem Beispiel verwenden wir das Test-Framework der Go-Sprache, um die Benchmark-Funktion zu schreiben. Die Funktion benchmarkFacttorial dient zum Einrichten von Benchmark-Tests und übergibt iterative und rekursive Funktionen als Parameter. Wir haben jeden Benchmark auf eine 20-malige Schleife festgelegt und dann die Leistung iterativer und rekursiver Methoden getestet. Nachdem wir den Benchmark ausgeführt haben, können wir beobachten, dass die Iteration eine bessere Leistung erbringt als die Rekursion, wobei die iterative Funktion in etwa der Hälfte der Zeit ausgeführt wird wie die rekursive Funktion.
Das obige ist der detaillierte Inhalt vonGolang implementiert Fakultät. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!