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

递归判断两数组元素和相等的C语言编程题解法问询

问题分析与正确解法

你的现有解法核心逻辑错误:你写的areArraysEqual函数是在判断两个数组的对应元素是否完全一致,但题目要求的是判断两个数组的元素总和是否相等,这是完全不同的需求——第一个示例中虽然总和相同,但对应元素不全相等,所以你的函数返回false,这是符合你写的逻辑,但不符合题目要求。

正确思路

要递归判断两个数组的元素和是否相等,我们可以通过递归计算两个数组的元素总和,再比较总和是否一致;或者更高效的方式,递归计算两个数组对应元素的差值总和,最终判断差值是否为0。这里我们采用递归计算数组和的方式,逻辑更清晰,且符合题目要求。

实现步骤

  1. 编写一个递归辅助函数sumArray,用于计算单个数组的元素总和:
    • 基准情况:当数组长度为0时,总和为0。
    • 递归步骤:返回当前最后一个元素的值,加上前size-1个元素的总和。
  2. 在isEqualSum函数中,调用辅助函数分别计算两个数组的总和,再比较两个总和是否相等。

完整代码

#include <stdbool.h>

// 递归计算数组元素总和
int sumArray(int arr[], int size) {
    if (size == 0) {
        return 0;
    }
    return arr[size - 1] + sumArray(arr, size - 1);
}

// 题目要求的函数
bool isEqualSum(int arr1[], int arr2[], int size) {
    return sumArray(arr1, size) == sumArray(arr2, size);
}

验证示例

  1. 对于输入arr1 = {1, 2, 3, 4},arr2 = {-1, 2, 12, -3},size = 4:
    • sumArray(arr1,4)计算得1+2+3+4=10,sumArray(arr2,4)计算得-1+2+12+(-3)=10,返回true。
  2. 对于输入arr1 = {1, 3, 3, 4},arr2 = {-1, 2, 12, -3},size = 4:
    • sumArray(arr1,4)计算得1+3+3+4=11,sumArray(arr2,4)为10,返回false。

符合题目要求的说明

  • 未修改原数组:所有操作仅读取元素值,调用函数前后数组原始值保持不变。
  • 未使用临时数组:仅通过递归栈存储中间计算结果,无额外临时数组。
  • 递归实现:sumArray采用递归逻辑,满足题目对递归的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 02:23:10