Edited at

金の正解!銀の正解!【数列の和編】

More than 1 year has passed since last update.

プログラミングの学習を始めた人は、一度は数列の和を求めるプログラムを書いたことがあると思う。Javaプログラムで数列の和を求めるプログラムを書くとき、人によって出来上がるものが違うので、フジテレビのクイズ番組風にまとめてみた。


問題

二つの整数 a と b を引数とし、 a から b までの整数の和を返却するメソッドを作る。ただし、引数は以下の条件とする。


  • a < b である

  • a >= 0 である

  • b < 100000 である


鉄の正解

定番のfor文を使った実装。

だいたいの人がこれ、もちろん僕も。無意識にこれ書いてる。

ただ、これだとコード量も多いし速度も遅い。

int iron (int a, int b) {

int result = 0;
for (int i = a; i <= b; i++) {
result = result + i;
}
return result;
}


銀の正解

Java8から導入された便利な機能を使ってスマートに実装する。

新技術に敏感な人はこれを書いてくる。

int silver (int a, int b) {

return IntStream.range(a, b + 1).sum();
}


金の正解

等差数列 和の公式を持ち出してくる。

賢いやつはこれを書いてくる、信じられん。

(コメント欄のsaka1029さんの関数を採用)

int gold (int a, int b) {

return (a + b) * (b - a + 1) / 2;
}


最後に

Javaプログラミングの学習を始めたばかりの人、金の正解で先輩を驚かせてやってくれ。