我正在尝试计算这个:
x^y (mod a)
使用递归,因为它对于较大的数字更有效。这是我所拥有的:
public int mod (int x, int y, int a){
if(y == 2){
return x^2%a;
}
if(y%2 == 1){
return a%m*mod(x , y/2, a);
}
if(y%2 == 0 ){
return mod(x, y/2, a);
}
}
代码不起作用,另一个问题是最后一个括号处的“缺少返回语句”错误。可以采取什么措施来解决这个问题?
最佳答案
在 Java 中,返回类型不是 void
的函数必须返回某个值。不幸的是,编译器不够聪明,无法理解您的 if
语句涵盖了输入参数值的所有范围。编译器假设您的所有条件都可以计算为 false
,从而使该函数在这种情况下不返回任何值。因此无法证明函数的正确性,并报错。
关于java - 模运算的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39826810/