我正在编写一个使用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));
}
}
答案 0 :(得分:5)
编译器无法判断您的方法最终是否会达到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;
答案 1 :(得分:5)
在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;
}