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);
}
}
答案 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);
}
}