so sieht die Aufgabe aus:
Eine Softwarekomponente zum Test, ob ein Feld von ganzen Zahlen Duplikate enth¨alt, werde durch folgenden JUnit–
Test gestestet:
package duplikate;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class DuplikateTest {
@Test
public void test() {
assertTrue(Duplikate.duplikatFrei(new int[]{}));
assertTrue(Duplikate.duplikatFrei(new int[]{1}));
assertTrue(Duplikate.duplikatFrei(new int[]{1,2,3,4,5,6,7,8,9,0}));
assertFalse(Duplikate.duplikatFrei(new int[]{1,2,3,4,5,6,7,8,9,0,0}));
assertFalse(Duplikate.duplikatFrei(new int[]{1,1,2,3,4,5,6,7,8,9,0}));
assertFalse(Duplikate.duplikatFrei(new int[]{1,2,3,4,5,5,6,7,8,9,0}));
assertFalse(Duplikate.duplikatFrei(new int[]{1,2,3,4,5,5,6,7,8,9,0,1}));
assertFalse(Duplikate.duplikatFrei(new int[]{1,2,3,4,5,6,2,7,8,9,0}));
}
}
Schreiben Sie eine zum Test passende Softwarekomponente, die auf Duplikate testet und Rekursion nutzt.
Hinweis: Der rekursive Test auf Freiheit von Duplikaten kann durch folgendes Verfahren realisiert werden:
(i) Ein Feld mit weniger als zwei Elementen ist stets frei von Duplikaten.
(ii) a[0..n] ist frei von Duplikaten, wenn a[0..n-1] frei von Duplikaten ist
und a[n] nicht in a[0..n-1] vorkommt.
Dabei kann eine Hilfsfunktion eingesetzt werden, die neben dem Feld einen zweiten Parameter hat, der angibt, bis zu
welchem Index das Feld untersucht werden soll.