ホームページ  >  記事  >  バックエンド開発  >  Golangで合計を実装する方法

Golangで合計を実装する方法

PHPz
PHPzオリジナル
2023-03-30 10:00:011297ブラウズ

ご存知のとおり、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 を返し、それ以外の場合は nsum(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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。