Ich muss eine rekursive Funktion schreiben, die 4 Parameter erhält.Wie man rekursive Funktion verwaltet?
Die erste ist Array. der zweite - linke Index, der dritte ein rechter Index und "K" Index. Der "K" -Index ist eine Zelle im Array und der lrft-Index zeigt auf den Anfang und der rechte Index zeigt auf das Ende.
Ein Array kann solche Digitalis wie Nullen und Einsen enthalten. Die Methode gibt die maximale Länge einer Folge von Einsen zurück, die die Zelle k enthalten.
Hier ist das Beispiel für das Ergebnis, das ich bekommen müssen:
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
}
Hier ist meine Implementierung:
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;
}
}
Aber meine Lösung nicht richtig funktioniert.
In diesen Zeilen:
if (A[left] == 1 && A[right] == 1)
return res = A[left] + A[right]; //count ones
Wenn eine der Bedingungen einmal ausgeführt isn `t, sollten die folgenden Renditen nicht diejenigen hinzufügen Variable führen.
Und ich weiß nicht, wie es geht.
* "schreibe eine rekursive Funktion, die ** drei ** Parameter erhält" * und dann schreibst du eine Methode mit ** vier ** Parametern? Was ist damit? – Andreas
'floodOnes (A, 0, A.length-1 9)' ist ein Kompilierungsfehler. Bitte posten Sie gültigen Code, es sei denn, Sie fragen nach Kompilierungsfehlern. – Andreas
@Andreas, es wurde gerade bearbeitet. –