Java8: mit Streams Fibonacci-Folge berechnen


#1
Hallo,

Fibonacci-Folge ... in der die Summe zweier aufeinanderfolgender Zahlen die unmittelbar danach folgende Zahl ergibt, d.h. sieht so aus: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, …

Soweit bin ich mit Stream's gekommen:
IntStream.iterate(1, x -> x + x).limit(10).forEach(x -> System.out.print(x + ", "));
Ausgabe: 1, 2, 4, 8, 16, 32, 64, 128, 256, 512,

Frage:
statt 'x +x' muesste man formulieren können 'x_vorgaenger + x' ... Ist das möglich, wenn ja wie?

Danke.
Viele Grüße,
Sten
 

Improof

Erfahrenes Mitglied
#2
Hi,

ich weiß leider nicht genau die richtige Lösung, da ich bisher noch nicht mit den IntStreams gearbeitet habe, aber für die Fibonacci-Folge braucht man (wenn mans anders programmiert) eigentlich eine Rekursion. Habe eben mal gegoogelt, ob man irgendwie eine Rekursion bei IntStreams anwenden kann, leider aber nur ein Beispiel für die Fakultät gefunden (die aber glücklicherweise eigentlich auch rekursiv berechnet wird): http://stackoverflow.com/questions/28484544/calculating-factorial-using-java-8-intstream

Die beste Anwort schlägt IntStream::reduce vor. Kann dir wie gesagt nicht sagen, ob es so geht, wäre aber doch mal was, das man sich anschauen kann :)


Hoffe ich konnte wenigstens ein bisschen helfen!

Gruß
Daniel
 

Neue Beiträge