ご存知のとおり、Golang は効率的で簡潔かつ高速なプログラミング言語であり、誕生以来プログラマーに愛され、求められてきました。総和アルゴリズムは、多くの開発者によって常に探索と研究の焦点となってきました。この記事では、Golang で総和を実装する方法を紹介します。
まず第一に、ループを使用して合計を実装できます。たとえば、1 から 100 までの合計を計算するには、次のコードを使用できます。
sum := 0 for i := 1; i <= 100; i++ { sum += i } fmt.Println(sum)
上記のコードでは、sum
変数を使用して最終的な合計結果を保存します。 for ループにより、sum
に i の値が毎回加算され、最終的に累積和が得られます。このメソッドの時間計算量は O(n) です。
ループに加えて、再帰を使用して合計を実装することもできます。再帰により、大きな問題を複数の小さな問題に分解し、それらを段階的に解決し、小さな問題の結果を合計して最終結果を得ることができます。たとえば、次のコードは 1 から 100 までの合計の再帰計算を実装します。
func sum(n int) int { if n == 1 { return 1 } return n + sum(n-1) } fmt.Println(sum(100))
このコードでは、sum()
関数は整数 n
を受け取ります。を仮パラメータとして使用し、1 と比較します。 n
が 1 の場合は 1 を返し、それ以外の場合は n
に sum(n-1)
を加えた結果を返します。最後に、この関数を呼び出してパラメーター 100 を渡し、1 から 100 までの合計を計算します。時間計算量は O(n) です。
最後に、map-reduce を使用して合計を実装することもできます。 Golang では、golang.org/x/text/message/transform
パッケージと golang.org/x/text/message/catalog
パッケージを使用してこれを実装できます。詳細なコードは次のとおりです。
import ( "golang.org/x/text/message" "golang.org/x/text/message/catalog" ) // 使用 map-reduce 的方式实现求和,时间复杂度为 O(log n)。 func sum(n int) int { msgs := message.NewPrinter(catalog.New("en")) var sum int msg.Transform(msgs.Sprint(1), func(r rune) bool { sum += int(r - '0') return true }) return sum } fmt.Println(sum(100))
このコードでは、数値を文字列に変換してマップ リデュース操作を実行し、目的の合計結果を取得します。時間計算量は O(log n) です。
要約すると、上記は Golang で合計を実装するための 3 つの主な方法です。さまざまなシナリオやニーズに応じて、さまざまな実装方法を選択できます。この記事が皆さんのお役に立てれば幸いです。
以上がGolangで合計を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。