Я думаю, вам нужна эта строка:
return gcd (b, a % b)
вместо просто:
gcd (b, a % b)
Вот мой код Python, показывающий решение в действии:
>>> def gcd(a,b):
... if b != 0:
... return gcd(b, a % b)
... else:
... return a
...
>>> print gcd(12,9)
3
>>>
Это было с Python 2.4.3 в Linux.