Python自定义求绝对值函数触发递归错误的原因与修复方法求助
递归错误成因及修复方案
错误原因
- 无递归终止出口:你编写的
absol函数所有分支都在调用自身,没有任何跳出递归的逻辑,会持续触发函数调用直到超过Python默认的递归深度限制,最终抛出递归错误。 - 逻辑分支不符合数学定义:两个分支
x>=0和x<=0存在重叠(x=0会同时满足两个判断条件),且都没有按照绝对值定义返回对应计算结果,仅重复调用自身。 - 存在无参数错误调用:代码末尾的
absol()没有传入要求的x参数,即便递归问题解决也会抛出参数缺失错误。
修复代码
按照绝对值的定义不需要用到递归,直接返回对应计算结果即可,修复后代码如下:
def absol(x): if x >= 0: return x else: return -x print("absolute value to 5 is", absol(5)) print("absolute value to -3 is", absol(-3)) print("absolute value to 0 is", absol(0))
修复说明
- 移除了所有递归调用,
x>=0时直接返回x本身,x<0时直接返回-x,完全符合给定的绝对值数学定义 - 简化了判断分支,仅保留两个互斥的逻辑分支,避免判断条件重叠
- 删除了末尾无参数的错误调用语句
内容的提问来源于stack exchange,提问作者Sebastian
相关产品推荐
相关产品推荐

