Wie generiert man in Java folgende Zahlenfolge?

5 Antworten

for(int i=1; i<=100; i+=2) {
   System.out.println(-i);
   System.out.println(i+1);
}

Mit einer Schleife. Man beginne mit -1, und gebe immer die Zahl aus. Wenn die Zahl gerade ist (= durch 2 teilbar), gibt man nicht die Zahl selbst aus, sondern den Betrag (in Java z.B. mittels Math.abs()).

Woher ich das weiß:Berufserfahrung – Inhaber einer App-Agentur & 15+ Jahre Programmiererfahrung

ranger1111  26.05.2020, 22:03

Ja, das geht auch, aber da braucht man ein If extra.

1
ranger1111  26.05.2020, 22:25
@MrAmazing2

Ich würde denken gerade deswegen nicht. Du meinst vermutlich für hohe i oder? Naja, ich weiß nicht inwieweit der Compiler das optimiert. Ich denke er tut es.

Ich würde sagen, diese hier ist die Informatiker-Lösung und meine ist die Mathematiker-Lösung.

2

for(int i=1;i<n;i++)

System.out.print((i%2 == 0 ? i : -i)+", ");


Winfimet  27.05.2020, 03:56
for(int i=1;i<n;i++)
System.out.print((i%2 == 0 ? i : -i)+", ");

/*Ich haben hier den bedingten Ausdruck verwendet mit modolu. Wenn jedesmal der i wert modolu 2 gleich 0 ergibt, dann gebe den Wert i aus, sonst den wert -i.
Das in eine Klammer und dann einen Kommentar noch hinzufügen, um die Zahlen von einander zu trennen.*/
0

For schleife. i inkrementieren und (-1)^i drauf multiplizieren

Woher ich das weiß:Studium / Ausbildung – Informatik studiert und mit PCs & Technik beschäftigt

dieLuka  26.05.2020, 22:11

Ein Problem. (0+1)*-1 =-1 ok (-1+1)*-1 =....

Wenn du i erhöhst und i fest *-1 rechnest hast du ein Problem mit den negativen Zahlen denn -5+1 ist -4 du brauchtest aber -6 (also -5-1) um damit mit *-1 eine 6 zu machen. Für 6 brauchst du dann wieder +1 um daraus mit *-1 die -7 zu machen.

Wenn du *-1 nur für die Ausgabe nutzt musst du auf grade/ungrade prüfen. Wenn du damit i anpasst musst du abwechselnd +1 oder -1 rechnen.

0
ranger1111  26.05.2020, 22:15
@dieLuka

Ich wende eine alternierende Folge an, so wie man es mathematisch machen würde.

a_i=i × (-1)^i

und lasse i von 1 an laufen. Alles passt. Ich nehme ja nicht Mal -1 sondern Mal -1 hoch i.

1

zwei Schleifen

eine macht +1, die andere +1 *(-1)


ranger1111  26.05.2020, 22:02

Das kann man doch alles in einer Schleife machen.

2
ranger1111  26.05.2020, 22:04
@Hallokomma3

Der Fragesteller soll oder will hoffentlich was lernen, da ist es sinnvoll, zu korrigieren.

2