total = 0
for i in range(0, some upper bound):
total += i
これが基本的なものである場合は申し訳ありませんが、私はこれらをたくさん持っており、快適であるよりも多くのスペースを占めています.
total = 0
for i in range(0, some upper bound):
total += i
これが基本的なものである場合は申し訳ありませんが、私はこれらをたくさん持っており、快適であるよりも多くのスペースを占めています.
total = sum(range(upper))
また
total = upper * (upper - 1) / 2
1 つ目は Python、2 つ目は Gauss です。
編集: ゼロから開始しない場合:
total = sum(range(lower, upper))
または、再びガウスによれば、 で同じことを行い、同じものupper
を減算しlower
ます :
total = upper * (upper - 1) / 2 - lower * (lower - 1) / 2
Python 2.x を使用している場合は、すべてrange
をに置き換えますxrange
。
total = some_upper_bound * (some_upper_bound -1) / 2
場合lower_bound != 0
:
total = (some_upper_bound - lower_bound) * (some_upper_bound + lower_bound - 1) / 2
更新:受け入れられた回答の一部の正確なコピーであるため、回答を削除しました(ただし、個別に回答しました)。ただし、1つは非常に小さいですが、理論的には興味深い改善がlower_bound
含まれています。私の答えには2つの乗算/除算しか含まれていません(加算/減算よりも比較的高価です)が、もう1つの回答には4つ含まれています。
eumiro を展開します。わかりやすくするために、Gauss メソッドをカプセル化するメソッドを作成することができます。次のようなものをお勧めします (Python の構文がわからないため、Groovy で記述します)。
public int sumUpToBoundary(def upper_bound){
return (upper_bound) * (upper_bound - 1) / 2;
}
public int sumBetween(def lower_bound, def upper_bound){
return sumUpToBoundary(upper_bound) - sumUpToBoundary(lower_bound);
}
public void someOtherMethod() {
int total = sumUpToBoundary(some_upper_bound);
int total2 = sumBetween(some_lower_bound, some_upper_bound);
}
更新: @mspy は、私のメソッド シグネチャが Python のスタイルではないことを指摘しました。この例を groovy に更新しました。これは、Python に似た構文をサポートするものです。