The Algorithms logo
The Algorithms


    rabbits(n::Integer, k::Integer)


Given: Two numbers:
          - n => number of months
          - k => number of rabbits litter per each pair 

Returns: Number of rabbits after n months

Contributed by:- [Nikola Mircic](

function rabbits(n::Integer, k::Integer)
    # For calculating the number of rabbit pairs, we will only need the last two months
    # and instead of the array with n elements, we will only use two variables
    a = 1 # First generation
    b = 1 # Second generation
    # Calculate the number of rabbits for each generation from 3rd to nth
    for i in 3:n
        # Every rabbit pair older than month will give 3 new pairs
        # so the number of rabbits in k-th month is a[k] = a[k-1] + a[k-2] * 3
        t = b
        b = b + 3 * a
        a = t
    return b