Memoizer is a struct, that can be used to calculate different recursive functions with repeatingly the same values.
To do that it saves every single calculated result in a Dictionary and can then, if repeatedly called, just take a already calcualted result from the dictionnary instead of recalculating it.
Fibonacci numbers, factorial, see MemoizerExamples.swift