Shows runtime error on IB judge but works fine on local IDE


#1

My code gives correct solution on local IDE for sample test case: 30 12 , but when I run it on Interview Bit it gives runtime error. Can’t figure out what’s going wrong? Anyone with a piece of advice?
Here’s the code:

int findGCD(int x, int b) {  //euclid's algorithm recursive implementation
if (x == 0)
    return b;
findGCD(b % x, x);

}

int Solution::cpFact(int A, int B) {
//iterate to sqrt(A) and find all factors
//sort them in ascending order
//euclid’s algorithm to find GCD

int i,j;
vector<int>factors;
for ( i = 1; i <= sqrt(A); ++i) {  //storing all factors
    if (A % i == 0)
    {
        factors.push_back(i);
        if(A/i!=i)
            factors.push_back(A / i);
    }
}

sort(factors.begin(), factors.end());    //sorting factors in ascending order

for (auto it = factors.rbegin(); it != factors.rend(); ++it) {  //iterating from the reverse side with the largest factors 
    i = (*it) > B ? B : (*it);  // i stores the smallest number and j the bigger number
    if (i == *it)
        j = B;
else
            j = *it;
        i = findGCD(i, j);
        if (i == 1)   //if coprime 
            return *it;
    }
}

#2

found out the problem: the return statement is missing in the last line of the findGCD function.