gcd standard and recursive