recursive gcd working