#include <iostream>
#include <climits>
//original function:
long f(int n)
{
    if(n == 0) return 0;
    else if(n < 0) return -f(-n);
    else return f(n-1) + 3*n*(n-1);
}

//My implementation:
long f2(int n)
{   
    long result = 0;
    if(n<0)
    { 
        for (long i = 0; i<=n*-1; i++)
        {
            result += -(3*i*i-3*i);
        }
    }
    else
    {
        for (long i = 0; i<=n; i++)
        {
            result += 3*i*i-3*i;
        }
    }
    return result;
}

int main()
{
    //brute force check 😅:
    for (int i = -20000; i != INT_MAX ; i++){
        if(f(i) != f2(i))
        {
            std::cout << i << " WRONG!!😦 " << f(i) << " != "<< f2(i) << "\n";
            /* Its seems like my implementation works well, until it reches the number 26756, there it 
               outputs 19154179862460 instead of 19149884895164 and the error only gets worse from there.
               I have no idea why this happens, and i dont have time to figure it out 🙃 
               Please enlighten me if you can!
            */
            break;
        }
    }
}