Ist es möglich die Fibonacci Folge in java bis z.B. 50 anzeigen zu lassen mit nur einem Übergabeparameter und nur einer funktion?
hier haben wir einen pseudocode der das zeigt:
main(){
fibonacci(1) // soll bei 1 starten
}
func fibonacci(){
print fibo
return fibo
}
2 Antworten
Je nachdem, was du machen möchtest, kannst du evtl. als Parameter schlicht ein Tupel übergeben oder den Goldenen Schnitt zur Berechnung verwenden.
Oder du nutzt kaskadenartige Rekursion.
Ich sehe jetzt nicht, wo es da eine wirkliche Einschränkung geben sollte.
Klar
Hier mal in Pseudocode.
List numbers;
numbers.Add(1);
numbers.Add(1);
value = 0;
do
value = numbers[numbers.Count -1]+numbers[numbers.Count - 2];
numbers.Add(value);
while(value < Zielnummer);
Nach dem while ists eben nur noch Rückgabe der Liste und das anzeigen von dieser.
Die Fibonacci Folge ist ja keine einzige Zahl, also wie willst du die Folge zurückgeben wenn du keine Liste verwendest?
Die Schleife kannst du natürlich durch eine Rekursion ersetzen, aber dann hast du 2 Übergabeparameter oder einen kombinierten Typ.
also der fronaldfruck hatte eine idee die äußerst interessant ist, man könnte irgendwie die zaheln kodieren, dass ich in dem nächsten rekursionsschritt die vorherige zahl mit drinne habe
Du kannst damit die Rekursion machen, aber die Rückgabe der Liste geht damit nicht.
Wenn du ein long nimmst passen da 2 int rein, also die Rekursion kannst du so machen, aber dann kannst du nur die Liste mit print ausgeben die Rückgabe über return geht dann nicht.
hmm also ich will ja direkt in der funktion ausgeben also void, brauche da nichts zurückgeben, geht das dann, ich probiere mich gerade rum
Das geht.
Schreib deine Funktion mal so
int Fibonacci (int param1 , int param2)
Das int int ersetzt du dann durch long param und machst
int param1 = param&0xFFFFFFFF;
int param2 = param >> 32;
Zum recodieren dann eben wieder
param = param2 << 32 | param1;
So hast du dann 2 parameter in einem Zusammemgefasst.
Du kannst den long natürlich auch auf 8 Bytes aufspalten.
ne ne, ohne liste oder sowas, nur ganz einfach ohne schleifen nur rekursion und ohne was zu speichern vorher