LoginSignup
5
6

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-08-08

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

5
6
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6