You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决判断数组是否有序的递归代码栈溢出错误?

解决递归判断有序数组时的栈溢出问题

你的递归代码处理长度3565的大数组时触发了递归深度超限(栈溢出)——Python默认递归深度限制约为1000,数组长度远超过这个值,导致递归调用栈撑爆,抛出回溯错误。

原代码的问题

每次递归都执行arr[1:]切片操作,不仅会创建新数组浪费内存,还让递归深度等于数组长度,直接触发Python的递归深度限制。

解决方案

方案一:改用迭代实现(推荐)

迭代完全没有递归深度限制,效率更高:

class Solution:
    def arraySortedOrNot(self, arr, n):
        if n <= 1:
            return True
        for i in range(n - 1):
            if arr[i] > arr[i + 1]:
                return False
        return True

方案二:优化递归逻辑(保留递归的情况下)

通过传递索引代替数组切片,避免创建新数组,同时控制递归深度:

class Solution:
    def arraySortedOrNot(self, arr, n):
        def helper(index):
            if index == n - 1:
                return True
            if arr[index] > arr[index + 1]:
                return False
            return helper(index + 1)
        
        return helper(0) if n > 1 else True

补充说明

  • 迭代方案时间复杂度O(n),空间复杂度O(1),是处理这类问题的最优选择
  • 若一定要用递归,不建议手动修改sys.setrecursionlimit()来提升深度限制——这个操作可能导致程序崩溃或其他未知问题

内容的提问来源于stack exchange,提问作者Himanshi Muley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 11:20:34