Wie löse ich die Javaaufgabe für den goldenen Schnitt?

2 Antworten

Du solltest vorher result und result2 klären (ihnen einen Initialwert geben). Ich weiß nicht ob das in Java so ein großes Problem ist, weil ich nicht mit Java arbeite, aber in C und C++ wird beim initialisieren einer Variable immer nur Speicherplatz reserviert, was vorher an der Stelle stand, kann beliebig sein. Z.b. wenn result den Anfangswert 2.18648446 hat, verschwindet der Fehler ja mit größer werdendem n, aber er ist trotzdem da. Setze result auf 1 bevor du die Schleife anfängst und alles ist ok, alle weiteren Fehler sollten Fließkommafehler sein, weil du mit doubles arbeitest.

LG

Du hast "result" nicht initialisiert. Deshalb wird der Standardwert von "0" vergeben. Die Probleme, die die Division durch 0 mit sich bringt, sind dir vermutlich bekannt.

Ich würde dir empfehlen, es mittels Rekursion zu lösen:

public static double calculate(int n) {
   if (n == 0)
return 1; return 1f + 1f / calculate(n - 1); }

Falls du die Lösung per Iteration bevorzugst, musst du "result" einfach nur mit "1" initialisieren und es sollte funktionieren.