I have to check how much faster works a code where I throw exception to end a recursion instead of return
My code with return looks this way:
def factorial(self, n):
if n==0:
return 1
else:
return n* self.factorial(n-1)
Now my code with raise:
def factorial2(self, n):
if n==0:
raise Exc(1)
else:
return n* self.factorial2(n-1)
I don't know, if it should look this way and what should I do to get a value
I've tried sth like this
try:
print factorial2(n)
except Exc:
1
But it doesn't work. I don't even know if I'm close to good solution.
Can anybody help me, give me some tips?
解决方案
you need the try/except in the else part of this function ... since all calls will eventually raise this exception if you listen outside then all your work is lost
def factorial2(self, n):
if n==0:
raise Exc(1)
else:
try:
return n* self.factorial2(n-1)
except Exc:
return n