python函数不可以递归调用_Python调用引发异常,而不是在递归函数中返回

I have to check how much faster works a code where I throw exception to end a recursion instead of return

My code with return looks this way:

def factorial(self, n):

if n==0:

return 1

else:

return n* self.factorial(n-1)

Now my code with raise:

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?

解决方案

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值