我必须检查一下代码的运行速度有多快,我抛出异常来结束递归而不是返回
我的返回代码看起来像这样:
def factorial(self, n):
if n==0:
return 1
else:
return n* self.factorial(n-1)
现在我的代码加注:
def factorial2(self, n):
if n==0:
raise Exc(1)
else:
return n* self.factorial2(n-1)
我不知道,它是否应该以这种方式看待我应该怎样做才能获得价值 我试过这样的事情
try:
print factorial2(n)
except Exc:
1
但它不起作用。我甚至不知道我是否接近良好的解决方案。
任何人都可以帮助我,给我一些提示吗?
答案 0 :(得分:2)
你需要在这个函数的else部分中使用try / except ...因为如果你在外面听,所有的调用最终会引发这个异常,那么你的所有工作都将丢失
def factorial2(self, n):
if n==0:
raise Exc(1)
else:
try:
return n* self.factorial2(n-1)
except Exc:
return n