java - 模运算的递归

标签 java recursion

我正在尝试计算这个:

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/

相关文章:

C - 无法在递归函数内进行索引

python - 如何计算递归函数中的案例数?

php - 使用 mysql 结果从多维 PHP 数组构建树

java - 对使用realm.allObjects()感到困惑

java - 如何通过RMI传递InputStream?

java - 使用 Mockito 验证该方法被调用的次数?

java - 如何使用 apache-poi 水平合并单元格

c++ - 递归类定义会在C++中产生无效的指针

python - 递归阶乘计算器 RecursionError

java - 部署基于终端的 Java 应用程序