program mit verschachtelte for schleifen rekursiv schreiben(java)?

...komplette Frage anzeigen

3 Antworten

Es kommt auf die Umgebungsbedingungen an, ob eine Rekursion sinnvoll ist oder nicht.

Es reicht, wenn die Menge der Schleifen, die zu verschachteln sind, von Fall zu Fall variiert. Herkömmlich müsste man dann für jeden solchen Fall eine extra Schleifen-Kaskade schreiben. Mit Rekursion braucht man das trotzdem nur einmal formulieren. Etwa wie hier: http://harryboeck.dyndns.org/Experimente/GuteFrageNet/recursive_functions.php

Jetzt stellen wir uns noch vor, dass die Menge der varianten Rekursionstiefen etwas größer sein kann und die Komplexität des Codes in den Schleifen etwas komplexer als in dieser trivialen Demo - und schon ist die Sache berechtigt.

Warum und was willst du daran rekursiv machen? Läuft doch so?

Oder zur Übung, um das Rekursionsprinzip zu verstehen?

Schachpapa 27.07.2016, 09:50

So?

   static void einmaleins(int i, int j) {
if (i > 10) {
return;
} else if (j > 10) {
einmaleins(i + 1, 1);
} else {
System.out.printf("%2d * %2d = %2d\t", i, j, i * j);
if (j % 5 == 0) {
System.out.println("");
}
einmaleins(i, j + 1);
}
}
1
leonardomessi 27.07.2016, 09:55

einfach nur üben weil mein kollege meinte es ist sinnvoll für die übung verschachtelte schleifen rekurtsiv zu schreiben weil "anspruchsvoller " ist

0
gfntom 27.07.2016, 10:05
@leonardomessi

Etwas "zur Übung" zu machen ist ok.

Gerade beim Programmieren gilt aber: So einfach wie möglich, so komplex wie nötig. Es absichtlich "anspruchsvoller" (d.h. komplizierter, weniger leicht lesbar) zu machen, ist kontraproduktiv.
Man könnte ja hier nicht mal sagen, dass der rekursive Code "eleganter" ist.

0
Schachpapa 27.07.2016, 10:34
@gfntom

Stimmt. Keep it simple and stupid (KISS-Prinzip)

Die Schleifen der ursprünglichen Version sind ein bekanntes Prinzip, über das man nicht weiter nachdenken muss, um es zu verstehen.

Das gleiche in eine endrekursive Methode umzusetzen ist weder lesbarer noch performanter.

Lesbarkeit ist eine wichtige Voraussetzung zur Wartbarkeit.

0

mir ist nicht ganz klar was du damit meinst:

 für jeden index i z.b.1 11=1 12=2 ...1*10=10

und mir ist auch nicht ganz klar was genau deine Frage ist

PerfectMuffin 27.07.2016, 09:43

Formatierung vermutlich.

0

Was möchtest Du wissen?