Java 求最大公约数

Java 求最大公约数,java,recursion,int,double,Java,Recursion,Int,Double,根据他们在纸上解决这个问题的方式: 我试图用108作为m,30作为n来求解Java中的最大公约数。问题是当我运行程序时,结果是0。我知道我可以使用这种方法,因为代码是我自己编写的,但每次编写这样的方法时,我都会遇到一个绊脚石: public static double getGcd_nr(int m, int n){ int dividend = m; int divisor = n; int quotient = dividend/divisor; int r

根据他们在纸上解决这个问题的方式:

我试图用108作为m,30作为n来求解Java中的最大公约数。问题是当我运行程序时,结果是0。我知道我可以使用这种方法,因为代码是我自己编写的,但每次编写这样的方法时,我都会遇到一个绊脚石:

public static double getGcd_nr(int m, int n){
    int dividend = m;
    int divisor = n;
    int quotient = dividend/divisor;
    int remainder = dividend % divisor;
    int gcd = 0;

    for(int i = divisor * quotient + remainder; i > 0; i--){
        dividend = divisor;
        divisor = remainder;
        if (remainder == 0){
            gcd = divisor;
        }
    }
    return gcd;
}
请你帮我完成我需要完成的事情。我需要自己编写代码,而不是复制别人的代码

while(m!=n)
{
  if(m >= n-1)
     m = m-n;
  else 
     n = n - m;  
}
return m;

查找两个数字的gcd的非递归解决方案。

您是要重新计算商和余数吗?我假设是这样,因为
股息的重新分配(目前是冗余的)
。你不是;重新分配
股息
除数
不是一回事。