Python调用引发异常,而不是在递归函数中返回 [英] Python Calling a raise exception instead of returning in recursive function
本文介绍了Python调用引发异常,而不是在递归函数中返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我必须检查在抛出异常以结束递归而不是返回的代码中,代码能以多快的速度工作
I have to check how much faster works a code where I throw exception to end a recursion instead of return
我的返回代码如下:
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)
我不知道,是否应该这样看,我应该怎么做才能获得价值 我已经尝试过
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?
推荐答案
您需要在此函数的else部分中使用try/except ...因为如果您在外面听,所有调用最终都会引发此异常,则您的所有工作都是丢失
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
这篇关于Python调用引发异常,而不是在递归函数中返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文