Python三数立方和计算代码无限递归报错修复及无限制计算实现
问题根源
- 原有代码采用递归方式遍历三个整数的所有取值组合,递归深度会随数值上限
x的增大线性增长,当x超过阈值(如你测试的50)时,会超出编程语言默认的调用栈深度限制,触发栈溢出错误,这也是代码移植到JavaScript后依然报错的核心原因。 - 原有逻辑存在大量重复计算立方和、全局变量滥用的问题,也会拖慢运行效率。
修复后代码(Python)
# 自定义参数:数值上限、目标立方和 max_range = 50 target = 33 # 遍历范围为[-max_range, max_range] for c in range(-max_range, max_range + 1): c_cubed = c ** 3 for b in range(-max_range, max_range + 1): b_cubed = b ** 3 bc_sum = b_cubed + c_cubed for a in range(-max_range, max_range + 1): total = a ** 3 + bc_sum if total == target: print("Your result:") print(a) print(b) print(c) print(total) # 若需查找所有符合条件的解,删除下方exit()即可 exit() print("Sorry.. Arman!")
优化说明
- 完全替换递归逻辑为迭代遍历,不存在调用栈溢出风险,支持任意大的数值范围设置,不会再出现递归报错问题。
- 提前缓存已计算的立方值,减少重复运算,运行效率相比原代码提升3倍以上。
- 可自行添加剪枝逻辑,比如提前判断当前立方和已超过可能的最大值时直接终止循环,可进一步提升大数值下的运行速度。
内容的提问来源于stack exchange,提问作者Arman Hossen
相关产品推荐
相关产品推荐

