2017-05-26 58 views
0

我得扫描尺寸,和2个阵列,并将它们与递归回报1比较,如果它们是例如相同,否则返回0。比较2个阵列递归(C语言)

如果我” ve得到: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; 
} 
+0

而你的问题是什么?此外,你应该明确定义什么意思是“相同的”,因为[1,2,3,4,5]和[2,1,3,4,5]绝对不是同一个数组。 –

+0

'比较2个数组与递归'........为什么? – ThingyWotsit

+0

我必须使用递归并且只有1 for循环。 –

回答

0
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);