( enpassant | 2023. 11. 09., cs – 11:20 )

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.