【发布时间】:2018-09-10 03:13:26
【问题描述】:
我有一个递归函数,当我使用超出限制的数字时,它会给出此错误“RuntimeError:cmp 中超出最大递归深度”。我希望让 except 块返回 -1(这是要求)并且控制不会转移到 except 块。请让我知道我的程序出了什么问题。提前致谢
def g(n):
try:
def f(x):
if x == 1:
return 1
elif x == 0.5:
return math.sqrt(PI)
else:
final_value = (x-1)*f(x-1)
return final_value
except RuntimeError:
return -1
n = f(n/2.0)
return n
【问题讨论】:
-
我不确定这应该做什么。对于偶数,它只是
(n/2)!。对于奇数,它是阶乘函数向实数的某种部分扩展——接近gamma(n/2),而您期望gamma(n/2 + 1)。对于其他所有内容(除非发生舍入错误使您在下降的过程中碰到1或0.5),这是一个无限递归到负无穷大。
标签: python error-handling runtime-error try-catch try-except