0

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

我的返回代码是这样的:

    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

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

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

4

1 回答 1

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
于 2013-10-14T19:25:45.680 回答