2017-05-26 57 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);