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) }
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!