java - 如何使用递归检查数组中的所有值是否相等?

标签 java arrays optimization recursion

我正在尝试递归地解决这个算法;我想检查数组中的所有值是否相同(或彼此相等)。如果所有值都相等,则返回 true,否则返回 false。我的代码没有通过任何测试。

public boolean allEqual(int[] a, int start, int end){
    if (start > end) return false;
    if (a.length==0) return false;
    if (start==end && a[start] == a[end]) return true;
    if (a[start] != a[end]){
        return false;
    }
    return allEqual(a, start++, end);
} 

最佳答案

改变

return allEqual(a, start++, end);

return allEqual(a, start+1, end);

start++start 的原始值传递给递归调用(这是后增量运算符返回的内容),因此您的递归将永远不会结束,您可能会得到一个 堆栈溢出错误

关于java - 如何使用递归检查数组中的所有值是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30737327/

相关文章:

.Net 数组的下限 > 0

javascript - 用另一个对象的索引填充一个对象

php - 对用户列表中每个人的数据库查询是否过多?

javascript - 在 Javascript 中优化函数闭包的使用有多大值(value)?

c++ - GCC 不会优化整数算术表达式

java - 尝试解析 xml 文件但在部署的 GAE 中出现 java.security.AccessControlException

java - fragment 和 AsyncTasks

java - java中的TreeSet无法正确显示数据

java - 如何提高从 AWS Lambda (Java) 初始调用 AWS 服务的性能?

c++ - 编译器不喜欢我的 C++ 类。获取未声明的标识符错误等等