Python调用引发异常,而不是在递归函数中返回 [英] Python Calling a raise exception instead of returning in recursive function

查看:117
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆