【问题标题】:comparing 2 arrays with recursion (C language)用递归比较 2 个数组(C 语言)
【发布时间】:2017-05-26 16:58:07
【问题描述】:

我必须扫描大小和2个数组,并将它们与递归进行比较,如果它们相同则返回1,否则返回0。

例如,如果我有: size=5, arr1= 1 2 3 4 5, arr2= 2 1 3 4 5 所以它很好,应该返回 1,当我运行大小为 2 的程序时,并为第一个数组插入“1,2”,为第二个数组插入“3,4”,程序返回 0。这很好,但如果输入“1,2”“1,2”我会出错。

 int RecSearch(int* arr1,int* arr2,int n)
{
int i=0,j=0;
for(i=j;j<n;j++)
    if(arr1[i]==arr2[j])
      {
        swap(&arr2[i],&arr2[j]);
        RecSearch(arr1-1,arr2-1,n);
      }
      if (arr1==arr2) return 1;
      else return 0;
}

【问题讨论】:

  • 你的问题是?此外,您应该更清楚地定义“相同”的含义,因为 [1,2,3,4,5] 和 [2,1,3,4,5] 绝对不是同一个数组。
  • '用递归比较两个数组'........为什么?
  • 我必须使用递归并且只有 1 个 for 循环。
  • “比较”是什么意思?为什么要使用swap() 方法?
  • 你到底为什么要交换两个相同的值?

标签: c arrays recursion compare


【解决方案1】:
int recursion(int * arr1, int * arr2, int size, int curr)
{
    int i = 0;
    for (i = 0; i < size; i++)
    {
        if (arr1[i] == arr2[curr])
        {
            curr++;

            if (curr == size)
                return 1;

            return recursion(arr1,arr2,size,curr);
        }
    }

    return 0;
}

这个函数的初始调用是:

int arr1[5] = {0,1,2,5,4};
int arr2[5] = {2,3,2,0,1};

int result = recursion(arr1, arr2, 5, 0);

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 2015-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2016-02-20
    • 2021-06-02
    • 2011-09-04
    • 1970-01-01
    相关资源
    最近更新 更多