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

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();