我似乎无法将以下算法成功转换为Java,请原谅可怕的图片质量,但我正在研究的一个问题是:

我曾尝试使用以下代码来表示欧几里德算法,但它似乎不起作用.我真的不知道如何用Java代码表示它.有帮助吗?
public static int gcd(int x, int y) {
if (y == 0) {
return x;
} else if (x >= y && y > 0) {
return gcd(y, (x % y));
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢.
您的代码不完整!
如果什么x < y?那么你的代码不会返回值!
本书没有提到的是,函数的两个参数不一定需要按降序排列(即x >= y)。您需要做的是gcd考虑到这一事实进行计算。
您只需执行以下操作即可:
public static int gcd ( int x , int y )
{
if ( y == 0 )
return x;
else if ( x >= y && y > 0)
return gcd ( y , x % y );
else return gcd ( y , x ); // if x < y then go ahead and switch them around.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20768 次 |
| 最近记录: |