Python调用引发异常而不是在递归函数中返回

时间:2013-10-14 19:18:17

标签: python exception recursion

我必须检查一下代码的运行速度有多快,我抛出异常来结束递归而不是返回

我的返回代码看起来像这样:

    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

但它不起作用。我甚至不知道我是否接近良好的解决方案。

任何人都可以帮助我,给我一些提示吗?

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