Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, ich würde gerne meine bisherige Methode in eine mit Arrays umwandeln, aber komme leider nicht weiter:
Thema ist hier von 1 bis n zu addieren, beispielsweise n=5 1+2+3+4+5 = 15
siehe Code:
Java:
public static int einsBisN(int n) {
int erg = 0;
for (int i = 1; i <= n; i++)
erg += i;
return erg;
Nun möchte ich dieses umwandeln, mein Anfang sieht so aus:
Java:
int [] array = new int [5];
int summe = 1;
for(int i = 0; i < array.length; i++) {
array[i] += summe;
wie geht es weiter?
Ich hoffe jemand kann mir hier weiterhelfen.
Danke!
Du willst bei Eingabe von n=5 ein Array {1,3,6,10,15} als Ergebnis bekommen? Dann musst Du lediglich in Deiner ersten Version in jeder Iteration das erg, nach dessen Erhöhung, in Deinem Array an Index i-1 speichern.
Also, die Signatur deiner Methode soll nach wie vor so aussehen: `int berechne(int n)` ?
Also: Du gibst ein int rein (in dem Fall, wie weit aufaddiert werden soll) und bekommst ein Ergebnis als int zurück, was eben die Summe von 1..n ist. Richtig?
Falls ja: Was soll das denn jetzt mit einem Array zu tun haben? Du hast weder ein Array als Eingabe noch als Ausgabe.
Falls nein: Sag mal ganz klar, was die Eingabe deiner Berechnung/Methode ist und was ganz genau die Ausgabe bzw. der Rückgabewert.
Hallo, ich würde gerne meine bisherige Methode in eine mit Arrays umwandeln, aber komme leider nicht weiter:
Thema ist hier von 1 bis n zu addieren, beispielsweise n=5 1+2+3+4+5 = 15
In diesem Kontext ein Array zu verwenden würde dann Sinn machen wenn die Berechnung der einzelnen Werte viel Zeit in Anspruch nimmt und die Verfügbarkeit der Ergebnisse keine Latenzen toleriert. Dann könnte man die Berechnung der Werte im Vorfeld machen und die Ergebnisse in ein Array speichern. Der Zugriff per Index wäre dann schnell. Dafür muss aber Speicher geopfert werden. Bei der Gauschen Summe ist nicht einmal eine Schleife nötig.
f(n) = (n*(n+1))/2;
f(5) = 5*6/2 = 15;
--> jeder Wert kann sofort ermittelt werden.
Habe es nach viel rätseln dann endlich hinbekommen
Mit diesem Code funktioniert es:
Java:
public static int array1BisN(int n) {
int [] array = new int[n];
int summe = 0;
for (int i = 0; i < array.length; i++) {
array[i] = i+1;
summe += array[i];
} return summe;
Habe es nach viel rätseln dann endlich hinbekommen
Mit diesem Code funktioniert es:
Java:
public static int array1BisN(int n) {
int [] array = new int[n];
int summe = 0;
for (int i = 0; i < array.length; i++) {
array[i] = i+1;
summe += array[i];
} return summe;