Java实验室 - 计算运行

时间:2017-12-05 23:33:15

标签: java arrays recursion

Langauge:Java

没有语法错误并传递了编译器,但我的测试人员失败了。谁能告诉我这里做错了什么?

以下是实验室文本说明该方法的用途: “计算从索引开始到索引结束的arr子阵列中有多少次运行(相等元素的连续块),包括”

另外:我不允许在本实验中使用任何循环,if-else语句也可以。

参数:arr = array,start / end =开始/结束的索引

public class Recursion {
    int countRuns(int[] arr, int start, int end) {
        if (start >= end) 
            return 0; //checks for null arrays 

        int counter = 0; 
        if (start == 0)
            counter = 1; 

        //check the next element for similarity/difference 
        if (arr[start] != arr[start+1])
            counter = 1; 

        return counter + countRuns(arr, start + 1, end);  
    }
}

1 个答案:

答案 0 :(得分:2)

我认为你只是略微错过了开始和结束的条件..这应该有效:

public class Recursion {
    int countRuns(int[] arr, int start, int end) {
        if (start > end) 
            return 0; //checks for null arrays 

        if (start == end) // the indices are inclusive
            return 1;

        int counter; 
        if (arr[start] == arr[start + 1]) {
            counter = 0; // we'll still be in the same run, if they're equal
        } else {
            counter = 1; // otherwise it's a new run
        }

        return counter + countRuns(arr, start + 1, end);
    }
}