The Fibonacci numbers 0,1,1,2,3,5,8,13,21,34,… are generated by the following simple rule

$$F_n = \begin{cases} F_{n-1}+F_{n-2}, & n>1 \, ,\\ 1, & n=1 \, ,\\ 0, & n=0 \, .\\ \end{cases}$$

Closed-form expression

(aka Bernoulli or Binet's formula)

$$F_n = \frac{\varphi^n-\psi^n}{\varphi-\psi} = \frac{\varphi^n-\psi^n}{\sqrt 5}$$

Since $\psi = -\varphi^{-1}$, Binet's formula can also be written as

$$F_n = \frac{\varphi^n - (-\varphi)^{-n}}{\sqrt 5} = \frac{\varphi^n - (-\varphi)^{-n}}{2\varphi - 1}$$

Binet's formula extended to real numbers.

$$F_n = \frac{\varphi^n - \varphi^{-n}}{2^n \sqrt{5}}$$

phi = 1 + sqrt(5)
psi = 1 - sqrt(5)
 
def Fibonacci(n):
    return int((phi**n - psi**n) / (2**n * sqrt(5)))
 

Recursively...

(defun fibonacci (n)
  (if (<= n 2) 
      1 
      (+ (fibonacci (- n 1)) (fibonacci (- n 2)))))
 

User Tools

Page Tools

Site Tools