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

使用递归检查数组是否有序时,结果始终为yes的错误排查

问题分析与修复方案

核心错误

你犯的关键错误是判断的是函数对象本身,而非函数执行后的返回值:

  • 你调用了isSorted(arr)但没有把返回结果存下来;
  • 后续的if isSorted:里,isSorted是函数的引用(对象),在Python中所有非空的对象都会被判定为True,所以不管数组是否有序,都会打印yes。

修复后的代码

你可以直接在判断条件中调用函数,或者先保存返回值再判断:

方式一:直接在判断中调用函数

def isSorted(arr):
    n = len(arr)
    if n == 0 or n == 1:
        return True
    elif arr[n-2] > arr[n-1]:
        return False
    return isSorted(arr[0:n-1])

arr = [1,9,9,4,5]    
if isSorted(arr):  # 直接使用函数的返回值进行判断
    print("yes")
else:
    print("no")

方式二:先保存返回值再判断

def isSorted(arr):
    n = len(arr)
    if n == 0 or n == 1:
        return True
    elif arr[n-2] > arr[n-1]:
        return False
    return isSorted(arr[0:n-1])

arr = [1,9,9,4,5]    
sorted_result = isSorted(arr)  # 保存函数返回结果
if sorted_result:
    print("yes")
else:
    print("no")

这样修改后,就能正确根据数组是否有序输出对应的结果了。

内容的提问来源于stack exchange,提问作者Sanyam Chandak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:25:23