2017-05-26 1 views
0

je dois obtenir analyser la taille et 2 tableaux, et de les comparer avec le retour de récursivité 1 si elles sont les mêmes, sinon retourner 0.comparant 2 tableaux avec récursion (langage C)

par exemple, si i » J'ai: size = 5, arr1 = 1 2 3 4 5, arr2 = 2 1 3 4 5 donc c'est bon et 1 devrait être retourné, quand je lance le programme avec la taille de 2, et insérer "1,2" pour premier tableau et "3,4" pour le deuxième tableau le programme renvoie 0. ce qui est bon, mais si vous entrez "1,2" "1,2" je reçois une erreur.

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

Et votre problème? En outre, vous devriez définir plus clairement ce que signifie "le même" parce que [1,2,3,4,5] et [2,1,3,4,5] ne sont certainement pas le même tableau. –

+0

'comparant 2 tableaux avec récursion' ....... pourquoi? – ThingyWotsit

+0

Je dois utiliser la récursivité et seulement 1 pour la boucle. –

Répondre

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; 
} 

L'appel initial de cette fonction est:

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

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