program mit verschachtelte for schleifen rekursiv schreiben(java)?
Also das program soll einfach für jeden index i z.b.1 11=1 12=2 ...1*10=10; und sollte j %5 == 0 sein dann sollte es für die übersicht ein absatz machen. vielen dank im vorraus
// 2 For schleifen um die Berechnung zu ermöglichen
for (int i=1;i<=10;i++){
for(int j=1;j<=10;j++){
System.out.print(i+"*"+j+"= "+(i*j)+" ");
//nach 5 Rechnungen immer zeilenumbruch
if(j%5==0){
System.out.println();
}
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.
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
Warum und was willst du daran rekursiv machen? Läuft doch so?
Oder zur Übung, um das Rekursionsprinzip zu verstehen?
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.
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.
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);
}
}
einfach nur üben weil mein kollege meinte es ist sinnvoll für die übung verschachtelte schleifen rekurtsiv zu schreiben weil "anspruchsvoller " ist