プログラミングの学習を始めた人は、一度は数列の和を求めるプログラムを書いたことがあると思う。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プログラミングの学習を始めたばかりの人、金の正解で先輩を驚かせてやってくれ。