Javaで最大公約数を求める


以下のようにgcd(a,b)を作って最大公約数を求めようと思ったのですが、繰り返しが終わらずに、公約数を求めることができませんでした。  
どこが間違っているのでしょうか。

[code]

    public static int gcd(int a, int b){
    
        while(true){
            System.out.println(a+" "+b);
            if(b==0)return a;
            gcd(b, a%b);
        }
    
    
    }
    
    public static void main(String[] args){
    
        int a,b;
    
        Scanner scan=new Scanner(System.in);
        a=scan.nextInt();
        b=scan.nextInt();
    
        System.out.println(gcd(a,b));
    
        scan.close();
    
[/code]




`gcd(b, a%b);`は`return gcd(b, a%b);`ではありませんか? あと`while`ループはいらないのでは．

[code]

    public static int gcd(int a, int b){
        System.out.println(a+" "+b);
        if(b==0) return a;
        return gcd(b, a%b);
    }
    
[/code]




`gcd(b, a%b);`は`return gcd(b, a%b);`ではありませんか? あと`while`ループはいらないのでは．

[code]

    public static int gcd(int a, int b){
        System.out.println(a+" "+b);
        if(b==0) return a;
        return gcd(b, a%b);
    }
    
[/code]

