#!/usr/bin/env perl6 # Neuen Typ der nur Positive Integer erlaubt subset Int::Pos of Int where { $_ > 0 }; # itterative lösung für fibonnaci zahlen mit cache sub fib ( Int::Pos $n ) { # Array das bisherige ergebnise cached state @array = ( 1, 1 ); # Cache abfragen ob die angeforderte fib zahl schonmal berechnet wurde # und wenn ja dies zurück geben. return @array[$n-1] if @array.exists($n-1); # ansonsten von der letzten fib bis zur aktuellen anfrage hochrechnen for @array.elems .. $n-1 -> $idx { @array[$idx] = @array[$idx-2] + @array[$idx-1]; } return @array[$n-1]; } # Die ersten 50 Fibonacci Zahlen berechnen for 1 .. 100 -> $num { printf "%4d: %.0lf\n", $num, fib($num); }