Verbesserungsvorschläge für Java Übung?
Hallo,
ich muss in Java eine Lösung für diese Aufgabe finden, habe auch schon sehr lange versucht, es zu lösen, doch bis jetzt schlug alles fehl.
Hat jemand eine Ahnung, was genau ich hier falsch gemacht habe, und evtl. Dies gelöst werden kann?
Bisher haben wir uns nur mit If Bedingungen und While schleifen beschäftigt, sprich ich müsste es irgendwie so lösen können, aber wie weiß ich nicht.
2 Antworten
Falls ihr Math.abs() verwenden dürft, würde ich persönlich folgendes empfehlen:
int summiereAuf(int a) {
return (a*a+Math.abs(a))/2;
}
Ansonsten das:
int summiereAuf(int a) {
if (a>=0) {
return (a*a+a)/2;
} else {
return -(a*a-a)/2;
}
}
Ah ich muss an die erste Funktion leider etwas anfügen, so wie oben funktionierts nicht:
static int summiereAuf(int a) {
return Integer.signum(a) * (a*a+Math.abs(a))/2;
}
Hat jemand eine Ahnung, was genau ich hier falsch gemacht habe, und evtl. Dies gelöst werden kann?
nun, schau dir doch mal an, was genau du programmiert hast.
betrachten wir die erste Schleife. While a != 0 wird a immer kleiner, sofern a kleiner als 0 ist. Bei a > 0 wirst du in eine Endlosschleife kommen, die du nie verlässt.
Reduziere das ganze mal zu einer Schleife und zähle in jeder Schleifeniteration einen Wert zu c drauf und verändere den Zähler, bis es passt.
Während a != 0: Summiere a auf das Ergebnis, reduziere a um 1
Das passt, sofern du Positive Werte nimmst. Um es auch für negative Werte funktional machen zu können, erhöhst du a jeweils um 1, sollte a negativ sein
Eine andere Möglichkeit, komplett ohne Schleife: Gauß'sche Summenformel