【发布时间】:2015-08-24 13:59:36
【问题描述】:
我正在尝试递归地解决这个算法;我想检查数组中的所有值是否相同(或彼此相等)。如果所有值都相等,则返回 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);
}
【问题讨论】:
-
你能举个例子,算法返回错误的结果吗?
-
请向我们提供一个测试用例、一个示例输入数组和预期的输出。 (我们在使用多维数组吗?这是 javascript 还是 java?
-
如果你想要一个测试它肯定不会通过(即使在 Eran 修复之后),尝试一个巨大的数组。
-
递归执行此操作没有任何借口(理由) - 它的效率非常低,并且会导致大型数组上的堆栈溢出。另外,通过与数组中的最后一个元素进行比较,您会故意读取不连续的内存块,这本身会减慢您的程序速度。请不要将其用于“真实”代码!
标签: java arrays optimization recursion