演習(メソッド2)の回答例

出典: CourseWiki

編集の都合でクラス名が MethodExercise3 になっています.

//メソッド定義の練習
public class MethodExercise3 {
    public static void main(String[] args) {
        System.out.println("GCD(24, 8) = " + gcd(24, 8));
        System.out.println("GCD(144, 84) = " + gcd(144, 84));
    }    
 
    // 2つの引数の最大公約数を求めるメソッド gcd
    private static int gcd(int a, int b) {
        while (a > 0 && b > 0) {  // a, bともに0より大きい
            if (a > b) {
                a = a % b;        // a > b のとき
            } else {
                b = b % a;        // a <= b のとき
            }
            if (a == 0) {         // a が 0 ならば答えは b
                //System.out.println("The result is " + b);
                return b;
            } else if (b == 0) {  // b が 0 ならば答えは a
                //System.out.println("The result is " + a);
                return a;
            }
        }
        // 実際にはここに到達することはないが,次の return 文がないと
        // コンパイルエラーになる.
        return 0;
    }
}

以前の演習では解が求まったらその場でSystem.out.println(..)で画面に出力していましたが, 今回は結果を return しているだけです.最大公約数をどのように扱うかは呼び出し側で決めればよいことで, gcdメソッドで決めてしまうと汎用性がなくなるためです.

また,最後の return 0 は return文に関する注意で書いたコンパイルエラーを避けるために入れてあります.

ナビゲーション