Entrekursivierung

Status
Nicht offen für weitere Antworten.
U

Unregistriert

Gast
Ich bräuchte mal eure Hilfe.
Könnt ihr mir die folgenden Zeilen in eine iterative Anweisung umformen?

Java:
public static int calcSthRekursiv (int i) {
  if (i>= 5)
    return 2;
  else
    return 3+calcSthRekursiv (i+1);
}
 

Der Müde Joe

Top Contributor
ich kanns dir optimieren

return 2;

EDIT:
ach..mist...völliger schwachsinn....

Java:
public static int calc(int i) {
	if (i >= 5) {
		return 2;
	}
	return 2 + Math.abs(i - 5) * 3;
}
 
Zuletzt bearbeitet:

Final_Striker

Top Contributor
schreib einfach nacheinander auf mit welchen werten die methode aufgerufen wird und was sie wieder zurück gibt. dann springt es dir sofort ins auge. ;-)
 
U

Unregistriert

Gast
@FinalStriker: ich bin irgendwie zu doof :(

nehmen wir an i=1

i=1 --> 3 + cSR (2)
i=2 --> 3 + cSR (3)
i=3 --> 3 + cSR (4)
i=4 --> 3 + csR (5)
i=5 --> 2

also würde... 2+3+3+3+3 = 14 zurückgegeben werden ???

das würde sich ja dann mit der Aussagen von "Der Müde Joe" decken :)
 

Final_Striker

Top Contributor
so, du hast ein anfangsergebnis (2) zu dem du immer wieder einen bestimmten wert hinzu addierst.
da du weißt wie oft du addieren musst, nimmst du dafür eine for-schleife.
 
U

Unregistriert

Gast
Java:
public static calcSthIterativ (int i) {
if (i<5)
 {
  int k = 2;
   for (i; i<5; i++)
   {
    return k + 3;
   }
  }
 else
  return 2;
}


nicht sehr elegant, aber so müsste es doch gehen, oder?
 
S

SlaterB

Gast
eine Schleife, die im inneren sofort etwas returnt, also nie mehr als einen Durchlauf erreicht, macht nie Sinn
 
U

Unregistriert

Gast
Java:
public static calcSthIterativ (int i) {
int k = 2;

for (i; i<5; i++)
{
k = k+3;
}

return k;
}
 

faetzminator

Gesperrter Benutzer
ich bin eindeutig für:
Java:
public static int calcSthIterativ(int i) {
    if (i < 5) {
        return 3 * Math.abs(5 - i) + 2;
    }
    return 2;
}
 
U

Unregistriert

Gast
klar ist die version am schönsten, es geht aber drum, wie es auch geht (wenn auch nicht so schön).
und auf die variante wäre ich alleine glaub ich erstmal nicht gekommen...
 
Status
Nicht offen für weitere Antworten.

Oben