INF205/lab_1/7.cpp

47 lines
1.1 KiB
C++

#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;
}
}
}