为什么Python递归实现数组元素批量乘系数会报最大递归深度错误
RecursionError报错原因分析
- 核心原因是递归函数缺少终止退出的逻辑,触发了无限递归,最终超过Python默认的递归深度阈值(默认值约为1000层)触发报错。
- 你当前编写的
multAllRec函数逻辑存在缺陷:仅在i<len(A)的条件下执行数组元素修改操作,但无论该条件是否成立,都会无差别执行下一层递归调用multAllRec(k, A, i + 1)。 - 以你测试的长度为5的数组为例:当i迭代到5时,
i<len(A)的条件不成立,不会修改元素,但程序仍会继续调用i=6、i=7……的递归,递归层级无限增长,直到触发系统限制。
修复方案
只需要补充递归终止逻辑,当索引超出数组范围时直接退出函数即可,修改后的代码参考:
def multAll(k,A) : multAllRec(k,A,0) def multAllRec(k,A,i) : # 索引超出范围时直接终止递归 if i >= len(A): return A[i] *= k multAllRec(k, A, i + 1) multAll(10,[5,12,31,7,25])
内容的提问来源于stack exchange,提问作者Dran Kisnosx
相关产品推荐
相关产品推荐

