Avoiding argument checking in recursive calls
Steven D'Aprano
steven at REMOVE.THIS.cybersource.com.au
Tue Feb 10 20:58:07 EST 2009
I sometimes write recursive functions like this simple factorial:
def fact(n):
if n < 0: raise ValueError
if n = 0: return 1
return fact(n-1)*n
At the risk of premature optimization, I wonder if there is an idiom for
avoiding the unnecessary test for n <= 0 in the subsequent recursive
calls? For the sake of the argument, let's pretend the test is expensive
and I have a good reason for wanting to avoid it on subsequent calls :)
I've done this:
def _fact(n):
if n = 0: return 1
return _fact(n-1)*n
def fact(n):
if n < 0: raise ValueError
return _fact(n)
but that's ugly. What else can I do?
--
Steven
More information about the Python-list
mailing list