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

用递归判断数组中是否存在相邻元素能被10整除

问题分析与修复方案

你的代码存在三个核心问题:

  • 逻辑判断完全错误:需求是两个相邻元素都能被10整除(即每个元素对10取余等于0),但你写的arr[i] + arr[i - 1] % 10 == 0既不符合需求,还因运算优先级问题,实际计算的是arr[i] + (arr[i-1]%10)是否等于0,逻辑彻底偏差。
  • 递归结果未传递:递归调用divideByTen(arr, num - 1)后,你没有接收并处理它的返回值。如果前面的递归已经找到符合条件的相邻对,当前函数会直接忽略这个结果,继续执行后续判断,最终可能错误返回false。
  • 边界逻辑有漏洞:递归过程中,若上层递归已返回true,当前层需要直接传递这个结果,而不是继续执行本地判断。

修复后的递归代码

public static boolean divideByTen(int arr[], int num) {
    int i = num - 1;
    
    if (i > 0) {
        // 先检查递归调用的结果,若前面已找到符合条件的对,直接返回true
        if (divideByTen(arr, num - 1)) {
            return true;
        }
        // 正确判断当前相邻的两个元素是否都能被10整除
        if (arr[i] % 10 == 0 && arr[i - 1] % 10 == 0) {
            return true;
        }
    }
    return false;
}

额外建议:迭代实现更直观

递归虽然可行,但对于这种线性遍历的需求,迭代实现更易读,还能避免数组过长时的栈溢出风险:

public static boolean divideByTen(int arr[]) {
    if (arr == null || arr.length < 2) {
        return false;
    }
    for (int i = 1; i < arr.length; i++) {
        if (arr[i] % 10 == 0 && arr[i-1] % 10 == 0) {
            return true;
        }
    }
    return false;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:25:37