Hi ich steh hier vor einem für mich unlösbaren problem.
Die Aufgabe lautet :
Entwickeln Sie eine rekursive Methode, die für einen positiven int Parameter n die Summe der ersten n Brüche 1/n als reelle Zahl zurückgibt.
Einer meiner kläglichen Versuche :
Code:
public static double add(int n)
{
if (n == 0)
{
return 0;
}
else
{
return (1/n)+(1/add(n-1));
}
}
ich hatte auch schon probiert mit math.pow(double n , -1)
und dann noch einen parameter x da rein zubringen das ich n-x habe und x dann hochzählen lasse aber das hat auch nicht geklappt.
bei 0 kannst du nicht aufhören, da division durch 0 scheitert. Ein guter Zeitpunkt wäre 1.
Das add liefert schon 1/n + den nächsten Schritt: also 1/(n-1).
das 1/ (1/n-1) stimmt nicht. also reicht + add(n--)
hey danke für die schnelle antwort. aber wenn ich den code so veränder
Code:
public static double add(int n)
{
if (n == 1)
{
return 1;
}
else
{
return (1/n)+ add(n--);
}
und das ganze dann zb für n = 4 durchlaufen lasse müsste irgendwas mit 2,08 rauskommen.
jedoch bekomm ich ne fehlermeldung "java.lang.StackOverflowError"
Wenn du das "d" weglaesst, dividiert Java 2 Integer, was in deinem Falle (n>=1) immer 0 liefern wuerde. Das "d" sagt dem Compiler, eine double 1 zu nehmen.
Du koenntest auch "1.0" oder "1." schreiben.
An deiner Stelle wuerde ich auch anstatt
Code:
return 1d/i + add(--i);
folgendes schreiben:
Code:
return 1d/i + add( i-1 );
Zudem wird ab einem entsprechend grossem i das Ergebnis mehr oder weniger stark verfaelscht. Du solltest dir deshalb mal die Klasse "BigDecimal" ansehen. Damit wird zwar alles langsamer, dafuer aber genau(er).
hi ihr da draußen.
ich steh vor dem nächsten problem
Mein Problem ist erstmal das ich nichtmal einen Pseudocode zu dieser Aufgabe aufstellen kann.
Aufgabe:
Schreiben Sie eine rekursive Methode, die alle Zeichenketten mit drei Buchstaben ausgibt, die
aus den genetischen Codes A, C, G und T bestehen. ¨Uberlegen Sie zun¨achst, wie Sie alle Folgen
aus zwei Buchstaben erzeugen k¨onnen und erweitern Sie dann die gefundene L¨osung.
Die Ausgabe soll folgendes Aussehen haben: AAA AAC AAG AAT ACA ACC ACG ACT
AGA AGC usw.