Python递归实现二进制转十进制函数出现Recursion Error的原因
RecursionError 含义与代码问题分析
错误含义
RecursionError 是 Python 的内置异常,当递归调用的深度超出了 Python 默认的递归深度限制时触发。直白说就是递归函数一直在自我调用,没有正确触底停止,最终耗尽了系统允许的递归层级上限。
产生原因
你的代码里有两个核心问题导致了无限递归:
- 基例判断完全错误:函数接收的参数
b是二进制字符串,但你在基例里把它和整数0、1做比较(b == 0、b == 1)。字符串和整数属于不同类型,永远不可能相等,所以这两个基例永远不会被触发。 - 递归无法终止:当你不断对字符串切片(
b[1:]),最终会得到空字符串"",此时依然会进入else分支,继续调用bin_to_dec(""),而空字符串切片后还是空字符串,导致递归无限循环,直到超过 Python 的递归深度限制,触发 RecursionError。
另外还有个隐性问题:基例返回的是字符串("0"、"1"),但递归逻辑里试图把字符串和整数相加(int(b[0])*2 + bin_to_dec_rest),即使修复了递归问题,这里也会触发类型错误,需要统一返回整数类型。
内容的提问来源于stack exchange,提问作者Urvi Chakravarthy
相关产品推荐
相关产品推荐

