Methoden Rekursiv festellen, ob eine Zahl gerade-oft vorkommt oder nicht

Blank !

Neues Mitglied
Ich soll einen Code schreiben, der feststellt, ob in einem Array die Anzahl eines Integer gerade ist oder ungerade.
Wenn die Anzahl gerade ist, soll true zurückgegeben werden, ansonsten false.
Wenn die Länge gleich 0 ist oder Array gleich null, soll auch false zurückgegeben werden.
Dies soll rekursiv implementiert werden.
Beispiel:

geradeVon(3, new int[] {1,3,3,2}) ---> true
geradeVon(1, new int[] {1,2,3,2}) ---> false

Java:
public static boolean geradeVon(int a, int[]b){
 
}
Der Basisfall sollte eigentlich(?) klar sein.
Java:
if (b.length == 0 || b == null)
            return false;

Würde mich freuen, wenn mir jemand Ideen geben würde, wie ich in dieses rekursive Denken komme.
 
Du hast da erst einmal nur einen Spezialfall abgehandelt, der erwähnt wurde. Ob das als Abbruchbedingung taugt, muss man sehen.

Rekursion ist immer aus zwei Teilen:
a) Abbruchbedingung
b) Rekursiver Schritt

Das kann man mathematisch in etwa so darstellen:
a) ist immer etwas wie f(1), das definiert wurde.
b) ist die Darstellung von f(n) mit Hilfe von f(n-1)

Jetzt hast du keine Zahl sondern eine Menge an Zahlen in Form eines Arrays.
Also wäre da die Übertragung:
f(1) Wäre die Formulierung für genau ein Element.
f(n) Wäre eine Formulierung vom ersten Element zusammen mit dem Ergebnis der restlichen Elemente.

Kannst du dies formulieren. Also rein sprachlich:
A) du bekommst die gesuchte Zahl und eine weitere Zahl: kannst du das Ergebnis bestimmen?
B) du bekommst die gesuchte Zahl, die erste Zahl der Menge und das Ergebnis der übrigen Zahlen.

Schreib dir ggf auf, was das Ergebnis genau bedeutet. Das sollte helfen.

Als letzten Schritt kannst du prüfen, ob der Schritt von 1 auf 0 auch per f(n) erfolgen kann. Dann wäre das f(0) die Abbruchbedingung und nicht eine Sonderbehandlung. Für die generelle Lösung spielt es aber keine Rolle.
 
Ich soll einen Code schreiben, der feststellt, ob in einem Array die Anzahl eines Integer gerade ist oder ungerade.
Wenn die Anzahl gerade ist, soll true zurückgegeben werden, ansonsten false.


geradeVon(3, new int[] {1,3,3,2}) ---> true
geradeVon(1, new int[] {1,2,3,2}) ---> false
Nur Mal für mich geht es hier wirklich um die Anzahl der Integer oder um die Summe?

Der Text sagt Anzahl, das Beispiel Summe...
 
Es geht um die Anzahl und dabei auch nur um die Frage, ob es gerade oder ungerade ist.

Und das ist in den Beispielen auch so. Erstes Beispiel: die 3 gibt es 2 Mal => gerade und somit true.
Zweites Beispiel: die 1 gibt es 1 Mal => ungerade und somit false.
 

Neue Themen


Zurück
Oben