Gratulálok!
A fibonaccihoz annyit, hogy ha az elejétől mész felfelé, akkor nem kell semmit sem memo(r)izálni, hiszen mindig meglesz a korábbi két érték.
Pl. Scalaban:
def fibonacci(n: Int) = {
def fib(current: Int, next: Int, index: Int): Int = {
if (index <= 1) next
else fib(next, current + next, index - 1)
}
fib(0, 1, n)
}
Ráadásul ennél a megoldásnál működik a tail call optimization, így ciklusra fordul és nem kapunk stackoverflow hibát.