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,
Als Aufgabe muss ich eine ungerade Zahlenfolge ausgeben mithilfe dem Berechnungsschema, welches ihr im Anhang findet. Soweit kein Problem, das Schema habe ich folgendermaße eingegeben:
Java:
public class Aufgabe
{
int N = 15;
int a1b=0;
public static void folge_a2 (){
for (int i=1; i<= N; i++)
{
if (i == 1)
{
a1b= 1;
System.out.println (a1b);
}
else
{
a1b= (i-1)+2;
System.out.println (a1b);
}
}
}
Das Problem ist jetzt, dass bei i=3 als Ergebnis 4 ausgegeben wird, was natürlich nicht in eine ungerade Zahlenfolge passt. Wahrscheinlich habe ich was falsch verstanden von daher hoffe ich auf schnelle Hilfe. Danke!
Natürlich bekomms du nicht das selbe heraus, wie in deiner Funktions-Definition. Entweder du verwendest Rekursion um den Aufruf a_{n-1} zu erhalten oder du siehst gleich, dass sich das ganze als 2*n - 1 darstellen lässt.
Ich gehe hier jedoch davon aus, dass das Ziel ist, eine rekursive Funktion zu implementieren.
Daher mal vollgende Vorlage:
Java:
public static int folge (int n){
if (n <= 1) // <= Weil du sonst den fall < 1 gesondert abfangen musst.
//...gib 1 zurück
else
//...addiere 2 + den wert von folge von n-1
}
@MWin123 Hallo, danke für die schnelle Antwort ! Ja ich denke, man verlangt tatsächlich die rekursive Folge. Ich habe gerade ein paar mal gegoogelt und versteh auch einigermaßen, was man darunter versteht, hab aber noch Probleme die Rechenoperation zu verstehen.
n-1 heißt bei mir dann (n=3) 3-1, wobei 2 herauskommt. Ich weiß dass das so nicht berechnet wird, aber ich verstehe es einfach nicht
@MWin123 Ich muss nochmal kurz nerven:
Wenn man das jetzt in Java eingeben möchte, wie stellt man das am schlausten an?
Würde es so auch gehen?
int a1b +=2
Startwert 1 und es wird jede Runde 2 addiert:
-1
-3
-5
-7
Oder würde der Tutor da anstreichen, da es nicht rekursiv ist?
public class Rekursiv {
public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
System.out.printf("a(%d) = %d%n", i, folge(i));
}
}
public static int folge(int n) {
if (n > 1) {
return folge(n - 1) + 2;
} else if (n == 1) {
return 1;
} else {
throw new IllegalArgumentException("Nicht definiert für n < 1");
}
}
}