階乗は数学における一般的な概念であり、正の整数 n とその前のすべての正の整数の積、つまり n! を表します。コンピューター プログラミングでは、階乗も一般的なアルゴリズムであり、統計的な並べ替えや組み合わせなどの計算問題でよく使用されます。
この記事では、Go 言語を使用して、反復や再帰などの階乗アルゴリズムを実装する方法を紹介します。
func factorialIterative(n int) int { result := 1 for i := 1; i <= n; i++ { result *= i } return result }この関数では、結果変数を使用して計算された積を保存し、1 から n まで 1 ずつ乗算します。 1 つ、最後に結果を返します。
func factorialRecursive(n int) int { if n <= 1 { return 1 } else { return n * factorialRecursive(n-1) } }この関数では、まず n が 1 以下かどうかを確認し、そうであれば 1 を返します。 。それ以外の場合は、n に
factorialRecursive(n-1) の戻り値を乗算して、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) }この例では、Go 言語のテスト フレームワークを使用してベンチマーク関数を作成します。 BenchmarkFacttorial 関数はベンチマーク テストを設定するために使用され、反復関数と再帰関数をパラメーターとして渡します。各ベンチマークを 20 回ループするように設定し、反復メソッドと再帰メソッドのパフォーマンスをテストしました。 ベンチマークを実行した後、反復関数は再帰関数の約半分の時間で実行され、反復関数の方が再帰関数よりもパフォーマンスが優れていることがわかります。
以上がGolang は階乗を実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。