Warum so kompliziert?
Delphi-Quellcode:
var
map: TMultiMap<Integer,Integer>;
i, f: Integer;
begin
map := TMultiMap<Integer,Integer>.Create;
for i := 3 to 6 do
for f := fib(i-1)+1 to fib(i) do
map.Add(i, f);
Gut, das kann man nun noch optimieren, da man weiß, dass fib(i) eh auch fib(i-1) berechnet, aber nunja