2016-06-22 11 views
-3

Die Frage lautet so: Schreiben Sie eine rekursive Funktion, die zwei positive int-Arrays und ihre Größen erhält. Die Funktion gibt 0 zurück, wenn mindestens ein gemeinsames Objekt vorhanden ist, und 1, wenn es nicht ein gemeinsames Objekt gibt.Finden, ob zwei Arrays gemeinsame Nummern mit Rekursion haben

int disjoint(int a[], int n1, int b[], int n2) 

Die Anforderungen sind wie folgt:

  • keine Hilfsfunktionen
  • keine Schleifen
  • nicht das Array
  • nur Rekursion

das ich habe, zur Zeit ändernden Probleme um alle Kombinationen für com zu bekommen mit anderen Worten, wie man verschachtelte Schleifen in Rekursion übersetzt.

Update diese funktioniert, aber es unnötige Wiederholungen macht.

int disjoint(int g1[], int n1 , int g2[], int n2){ 
if(g1[0]==g2[0])return 0; 
if(n2-1>0&&n1-1>=0){ 
return disjoint(g1+1,n1-1,g2,n2)*disjoint(g1,n1,g2+1,n2-1); 
} 
return 1; 
} 
+0

@PaulR nur hinzugefügt, danke –

+1

Das Posten des Codes, in dem "zurzeit Probleme haben, alle Kombinationen zum Vergleich zu erhalten ..." würde helfen, Ihr Ziel/Problem zu klären. – chux

+1

Es wäre sinnvoller, wenn die Signatur "int disjoint" (const int a [], int n1, const int b [], int n2) 'wäre und dann" no changing the array "ablegen würde. – chux

Antwort

2

Ich bin nicht es für Sie zu lösen, aber ...

Mit pseudo-Anmerkung: Die Arrays a[0..n] und b[0..m] disjunkt sind, wenn a[0] != b[0] und wenn a[1..n] und b[0..m] disjunkt sind unda[0..n] und b[1..m] sind disjunkt.

ich denken bekam ich das richtig ...

Ok, ein weiterer Hinweis: Eine der rekursiven Aufrufe wie disjoint(a + 1, n1 - 1, b, n2) aussehen könnte

Wenn Rekursion zu tun, ist es (zumindest für mich) besser Schauen Sie sich das Problem an und formulieren Sie die Lösung in Bezug auf das Problem selbst, anstatt eine iterative Lösung zu schreiben und dann zu versuchen, sie "zu übersetzen".

+1

Stimmen Sie Ihrer letzten Aussage positiv zu - Ein Neuanfang bei der Rekursion ist viel einfacher als der Versuch, eine iterative Lösung zu refaktorieren. – tofro

Verwandte Themen