Summe

konoha

Bekanntes Mitglied
Ich habe folgende aufgabe vorliegen ( siehe Screenshot). Kann mir jemand bitte erklären was "die Summe der drei Vorgänger einer ganzen Zahl" bedeutet?
 

Anhänge

  • rps20151112_062605.jpg
    rps20151112_062605.jpg
    104 KB · Aufrufe: 40

Joose

Top Contributor
Angenommen die 12 ist die Zahl, dann sind 9, 10 und 11 deren Vorgänger. Summe daraus ist 30.

Wenn man nur diese Phrase ("die Summe der drei Vorgänger einer ganzen Zahl") der Aufgabe hernimmt dann stimmt deine Antwort.

Wenn man sich die Aufgabenstellung anschaut und die Aufgabe als Gesamtes liest dann ist es leider nicht ganz richtig ;) (aber danach hat der TE nicht gefragt).
Ich nehme an deine in der Aufgabenstellung erwähnten Funktion "fib" berechnet dir die Summe der ersten X Fibonacci Zahlen. Deine Methode soll "fib3" soll nun die X.Fibonacci Zahl berechnen und deren 3 (fibonacci) vorgänger summieren.

(So habe ich die Aufgabe verstanden ;))
 

Joose

Top Contributor
Ich interpretiere die Aufgabenstellung so:
fib3(n) = fib3(n-1) + fib3(n-2) + fib3(n-3)

Leider nicht wirklich korrekt. Wenn dir "fib3" die Summe der 3. Fibonacci Vorgänger liefert dann liefert dir "fib3(n-1)" Auch nur die Summe von 3 Vorgängern usw. ;)
Deine Bedingungen von "fib3(0)=1" (usw.) stimmen zufällig aber es müsste jeweils die funktion "fib" sein nicht "fib3".

wie würde denn die formulierung aussehen wenn man es auf die gesamte aufgabenstellung bezieht?

Das habe ich schon oben geschrieben.
Beispiel:
In deiner Aufgabe sollst du "fib3(42)" berechnen lassen.
-> fib3 addiert die 3 Vorgänger Zahlen und liefert die Summe als Ergebnis.

In der Methode "fib3" musst du dir also die 41.Zahl, die 40. Zahl und die 39.Zahl der Fibonacci Reihe ausrechnen.
Diese Zahlen werden addiert und das Ergebnis mittels return zurückgegeben.

EDIT: Leider wissen wir nicht was die Methode "fib", die im Skript auf Folie 161 erklärt ist, genau liefert. Liefert diese Methode die X.Zahl der Fibonacci Reihe oder die Summe aller Zahlen bis zur X.Zahl?
 

Dompteur

Top Contributor
@Joose
Die Aufgabe geht davon aus, dass man die Fibonaccifolge kennt. Was ja kein Problem ist, da diese ja definiert ist:
fib(n) = fin(n-1) + fin(n-2)
Umgangssprachlich wird eine Fibonaccizahl als die Summe der beiden Vorgänger defniert.

Analog dazu soll eine neue Folge fib3 definiert werden.
Die 3 Vorgänger einer Zahl wären also die 3 vorherigen fib3 Werte der Folge.

Dazu passt auch die Angabe der 3 Startwerte. Die braucht man ja nur, damit fib3(3) gerechnet werden kann.
fib3(3) = fib3(2) + fib3(1) + fib3(0)
fib3(3) = 2 + 1 + 1 = 4

Natürlich könnte man die Aufgabenstellung exakter formulieren. Wahrscheinlich bezieht sie sich auch auf den Stoff, der da gerade im Kurs durchgemacht wird. Und hier fehlt da etwas der Kontext. Daher müssen wir interpretieren. ;-)
 

konoha

Bekanntes Mitglied
Das ist der auszug aus der folie. Ich habe aber so schlecht wie ich bin immer noch nicht ganz verstanden was ich machen soll. :(

Wie kann ich das nun in java rekursiv umsetzen?
 

Anhänge

  • Screenshot_20151112-101536.png
    Screenshot_20151112-101536.png
    260,5 KB · Aufrufe: 25
Zuletzt bearbeitet:

Dompteur

Top Contributor
Na wunderbar. Euer Vortragender liefert euch falsche Angaben.
Das Fibonacci-Bildungsgesetz sieht so aus:
fib(0) = 1
fib(1) = 1
fib(n+1) = fib(n) + fib(n-1) und nicht so, wie auf der Folie fib(n+2)

f(n+1) = f(n) + f(n-1) ist übrigens gleichbedeutend mit : f(n) = f(n-1) + f(n-2)

Da ihr ja gerade Rekursionen durchmacht (siehe dein Thread http://www.java-forum.org/thema/fakultaet.170358), würde ich fib3 auch als rekursive Funktion, so wie ich sie in meinem ersten Beitrag beschrieben habe, umsetzen.
 

konoha

Bekanntes Mitglied
fib(0) = 1
fib(1) = 1
fib(n+1) = fib(n) + fib(n-1) und nicht so, wie auf der Folie fib(n+2)

f(n+1) = f(n) + f(n-1) ist übrigens gleichbedeutend mit : f(n) = f(n-1) + f(n-2)

Heißt also ich muss für fib3 - + f(n-3) hinten dranschreiben?
Nur eine frage am ende, wenn ich jetzt allerdings für n die Zahl 3 einsetze:
f(n) = f(n-1) + f(n-2)+f(n-3)
f(3) = f(3-1) + f(3-2) +f(3-3)
f(3)=2+1+0
f(3)=3

Stimmt das?
 

Dompteur

Top Contributor
Heißt also ich muss für fib3 - + f(n-3) hinten dranschreiben?
Ich habe das bereits beantwortet: http://www.java-forum.org/thema/summe.170359/#post-1071636

Nur eine frage am ende, wenn ich jetzt allerdings für n die Zahl 3 einsetze:
f(n) = f(n-1) + f(n-2)+f(n-3)
f(3) = f(3-1) + f(3-2) +f(3-3)
f(3)=2+1+0
f(3)=3

Stimmt das?
Nein, die richtige Lösung steht hier: http://www.java-forum.org/thema/summe.170359/#post-1071639
 

Dompteur

Top Contributor
Da du die Funktion selbst schreibst, kannst du sie ja so formulieren, dass bei einem Aufruf mit dem Wert 0 das Ergebnis 1 lautet.
 

konoha

Bekanntes Mitglied
Das Programm gibt mir nichts aus? weiß jemand warum?

Java:
    public static void main (String[]args) {
   
    fib3(8);
   
   
    }
   
    public static int fib3(int n){
   
        if(n<4)
            return 1;
        else
            return fib3(n-2)+fib3(n-1)+fib3(n-1);
   
   
    }
}
 

Joose

Top Contributor
Ja weil du nirgends geschrieben hast das der Code etwas auf der Konsole ausgeben soll. Vielleicht solltest du ein "System.out.println" einbauen ;)

Nochmal zur erklärung der Schreibweise von oben (weil du immer wieder durcheinander kommst was nun parameter ist und was ergebnis)
fib3(0) = 1
fib3 .... ist der Methodenname
(0) .... der parameter
1 .... das ergebnis
 

konoha

Bekanntes Mitglied
okay danke joose. also bei fib3(5); gibt er mir eine 7 aus, und bei fib3(4) eine 3. kommt das hin mit den fibonacci zahlen mit 3 startwerten?
 

Neue Themen


Oben