演習(階乗)の解答例

出典: CourseWiki

目次

プログラム例

0001:public class Factorial {
0002:    public static void main(String[] arg) {
0003:        System.out.print("Enter an integer: ");
0004:        int n = Keyboard.intValue();
0005:
0006:        int i = 1;              // 1 から順に掛けます
0007:                                // ↑ 2 からはじめても良いでしょう
0008:        long fact = 1;          // 結果を入れる変数
0009:        while (i <= n) {        // n まで繰り返し
0010:            fact = fact * i;
0011:            i++;                // i = i + 1;
0012:        }
0013:
0014:        System.out.println("The result is " + fact);
0015:    }
0016:}
0017:

実行例

% java Factorial
Enter an integer: 5
The result is 120

解説

上は「考え方」の通りコーディングした例です. 3〜4行目でメッセージを表示して入力を要求しています.特にエラーチェッ クはしていません(以下の他のプログラムでも同様)が,気になる人は負でない かどうかチェックするとより良いでしょう.ちなみに,0 の階乗は 1 なので, 入力が 0 のときにも正しい答えが出てきます. 6行目で掛ける数 i を 1 に初期化しています.1 を掛けても答えは変わら ないので,2から始めることにしても構いません. 8〜12行目で fact に対して 1 から順に掛けていきます.

別解

public class Factorial2 {
    public static void main(String[] arg) {
    System.out.print("Enter an integer: ");
    int n = Keyboard.intValue();
 
    long fact = 1;
    while (n > 0) {
        fact = fact * n;
        n--;
    }
 
    System.out.println("The result is " + fact);
    }
}

上の例とは逆に,n, n-1, n-2,... と掛けるようにしてみました.こうすると 変数 i が不要になります.

ナビゲーション