use*_*007 1 java while-loop greatest-common-divisor
我正在编写一个使用GCD的欧几里德算法的程序(a,b)= GCD(b,r)r = a%b.我写了一个方法,应该返回一个整数,以便主方法吐出,但是当我要求它执行此操作时,它表示它不返回一个整数.这是代码
public class Euclid {
public static int GCD(int a, int b)
{
while (b != 0)
{
int r = a%b;
System.out.println("(" +a+ "," +b+ ")");
b = r;
a = b;
if(b == 0)
{
return a;
}
}
}
public static void main(String[] args)
{
System.out.println(GCD(36, 20));
}
}
Run Code Online (Sandbox Code Playgroud)
编译器无法判断您的方法最终会达到b == 0条件并返回.你可以将它重构为:
int ret = 1;
while (b != 0)
{
int r = a%b;
System.out.println("(" +a+ "," +b+ ")");
b = r;
a = b;
if(b == 0)
{
ret = a;
break;
}
}
return ret;
Run Code Online (Sandbox Code Playgroud)
在代码中,如果b == 0它不会返回int任何值或任何值.您必须通过指定默认返回值来处理此情况.
public static int GCD(int a, int b)
{
while (b != 0)
{
int r = a%b;
System.out.println("(" +a+ "," +b+ ")");
b = r;
a = b;
if(b == 0)
{
return a;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
254 次 |
| 最近记录: |