Wie löse ich diese Rekursionsaufgabe?

... komplette Frage anzeigen

3 Antworten

Ich habe bisher nur deine Aufgaben (oben) getestet.

public static boolean aliquot(int zahl, int ziffer) 

{
int x = ziffer % 10;

return (0 != ziffer
&& x == ziffer
&& 0 == zahl % ziffer)
|| (0 != x
&& 0 == zahl % x
&& aliquot(zahl, ziffer/10));
}

Das Teilergebnis x muss zwischengespeichert werden, damit eine Überprüfung auf 0 vorgenommen werden kann. Ansonsten kommt es im Fall 404 zu einer Exception. Mittels x == ziffer schau ich, ob ich mich gerade im letzten Rekursionsschritt befinde.

Zum Nachvollziehen am besten die Zahlen von 1-2 Aufgaben konkret einsetzen, die Berechnung von Modulo kann ein Taschenrechner / Google übernehmen.

Antwort bewerten Vielen Dank für Deine Bewertung

static boolean istTeilbar(int z1, int z2) {
return z2 % 10 == 0 ? false
: z2 < 10 ? z1 % z2 == 0
: z1 % (z2 % 10) != 0 ? false
: istTeilbar(z1,z2/10);
}

Erste Zeile fängt 0 ab.
Zweite Zeile: letzter Test
Dritte Zeile ggf. vorzeitiger Abbruch
Vierte Zeile Rekursion

Ohne Zwischenspeicher, ohne Schleife, ohne if

Antwort bewerten Vielen Dank für Deine Bewertung

Der code liest sich, so zusammen gequetscht ziemlich fies :'D

Und wenn ich mich gerade auf die schnelle im notepad nicht vertan hab, sollte das in etwa so aussehen:

public static boolean istTeilbar(int zahl1, int zahl2) {

String zahl2S = "" + zahl2;

if (zahl2S.contains("0"))
return false;

if (zahl1 % (zahl2 % 10) == 0)
return istTeilbar(zahl1, zahl2/10);
else
return false;
}
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von mustafa67p
06.04.2016, 20:27

Danke dir erstmal für deine Mühen, aber wir sollten halt keine Schleifen oder if-Anweisungen verwenden, hab das vorhin vergessen zu schreiben

0
Kommentar von Zuck3r
06.04.2016, 20:28

Da sind keine schleifen drin.
Du verwendest auch Bedingungen, ob du das jetzt in eine Zeile schreibst oder nicht. XD

Lies die Aufgabe nochmal richtig.  

1
Kommentar von Zuck3r
06.04.2016, 20:33

Glaube ich nicht.

0
Kommentar von Zuck3r
06.04.2016, 20:33

Man kann das if aber auch umschreiben wenn es sein muss. Warte.

0

Was möchtest Du wissen?