count = 0
def choose(n,k):
global count; count += 1
if k <= 0:
return 1
elif n < k:
return 0
else:
k = k if k <= n/2 else n - k
return ((n - k + 1)/k)*choose(n, k-1)
print "answer: ", choose(500,498)
print "function calls: ", count
Y291bnQgPSAwCgpkZWYgY2hvb3NlKG4sayk6CglnbG9iYWwgY291bnQ7IGNvdW50ICs9IDEKCWlmIGsgPD0gMDoKCQlyZXR1cm4gMQoJZWxpZiBuIDwgazoKCQlyZXR1cm4gMAoJZWxzZToKCQlrID0gayBpZiBrIDw9IG4vMiBlbHNlIG4gLSBrCgkJcmV0dXJuICgobiAtIGsgKyAxKS9rKSpjaG9vc2Uobiwgay0xKQoKcHJpbnQgImFuc3dlcjogIiwgY2hvb3NlKDUwMCw0OTgpCnByaW50ICJmdW5jdGlvbiBjYWxsczogIiwgY291bnQ=