Introduction Link to heading

The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such that each number is the sum of the two preceding ones, starting from 0 and 1. That is,

F(0) = 0,   F(1) = 1
F(N) = F(N - 1) + F(N - 2), for N > 1.
Given N, calculate F(N).

Example 1:

Input: 2
Output: 1
Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1.

Example 2:

Input: 3
Output: 2
Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2.

Example 3:

Input: 4
Output: 3
Explanation: F(4) = F(3) + F(2) = 2 + 1 = 3.

Solution Link to heading

One-loop solution:

func fib(N int) int {
    if N <= 1 {
        return N
    }
    T := make([]int, N+1)
    T[0] = 0
    T[1] = 1
    for i := 2; i <= N; i++ {
        T[i] = T[i-1] + T[i-2]
    }
    return T[N]
}

Without array solution:

func fib(N int) int {
    if N <= 1 {
        return N
    }
    Tim2 := 0
    Tim1 := 1
    Ti := 0
    for i := 2; i <= N; i++ {
        Ti = Tim1 + Tim2

        Tim2 = Tim1
        Tim1 = Ti
    }
    return Ti
}

Explanation Link to heading

In order to calculate Fibonacci number we need to know previous number and number before previous. Let’s store them in the array to speedup calculations. This solution could be optimized by replacing array with 2 variables.