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

B C*_*nyn 3 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);
} 
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 8

更改

return allEqual(a, start++, end);
Run Code Online (Sandbox Code Playgroud)

return allEqual(a, start+1, end);
Run Code Online (Sandbox Code Playgroud)

start++将原始值传递start给递归调用(这是post增量运算符返回的值),因此你的递归永远不会结束,你可能会得到一个StackOverflowError.