Мне нужно написать рекурсивную функцию, которая получает 4 параметра.Как управлять рекурсивной функцией?
Первый - это массив. второй - левый индекс, третий - правый индекс и индекс «K». Индекс «K» - это ячейка в массиве, а индекс lrft указывает на начало и справа указывает на конец.
Массив может содержать такие наброски, как нули и единицы. Метод возвращает максимальную длину последовательности из тех, которые содержат ячейку k.
Вот пример результата, что мне нужно получить:
public static void main(String[] args) {
int[] A = {1,1,1,0,1,1,0,1,1,1,1,1,0,1,1};
System.out.println(floodOnes(A,0, A.length-1, 9)); // 5 output
System.out.println(floodOnes(A,0, A.length-1, 3)); // 0 output
System.out.println(floodOnes(A,0, A.length-1, 0)); // 3 output
System.out.println(floodOnes(A,0, A.length-1, 14)); // 2 output
}
public static int floodOnes(int [] A,int left, int right, int k){
//some logic
}
Вот моя реализация:
public class Program {
public static void main(String[] args) {
int[] A = {1,1,1,0,1,1,0,1,1,1,1,1,0,1,1};
System.out.println(floodOnes(A,0,A.length-1, 9));
}
public static int floodOnes(int [] A,int left, int right, int k){
if (left != k) left+=1;
if (right != k) right-=1;
if (left == k && right == k) return A[k]; //condition when the recursive call stops
int res = floodOnes(A, left, right, k);
if (A[left] == 1 && A[right] == 1)
return res = A[left] + A[right]; //count ones
else return res;
}
}
Но мое решение не работает должным образом.
В этой строке:
if (A[left] == 1 && A[right] == 1)
return res = A[left] + A[right]; //count ones
Если один из условий `t isn выполняются один раз, следующие доходы не должны добавлять те, чтобы привести переменными.
И я не знаю, как это сделать.
* "написать рекурсивную функцию, которая получает ** три ** параметра" *, и затем вы переходите к написанию метода с ** четырьмя ** параметрами? Что с этим? – Andreas
'floodOnes (A, 0, A.length-1 9)' является ошибкой компиляции. Отправьте действительный код, если вы не спрашиваете о ошибках компиляции. – Andreas
@ Андреас, он только что был отредактирован. –