import java.util.List; import java.util.ArrayList; class RekursiveMetoder { /** * Returnerer summen av alle tallene i * int 2D array. Dette gjøres rekursivt * @param array: int[][] tallene som skal summeres * @return summen av alle tallene * i array */ public static int leggSammen2DArray (int[][] array){ if (array.length == 0) { return 0; } int sumAvForsteRad = sumArray(array[0], 0); int[][] arrCopy = new int[array.length-1][array[0].length]; System.arraycopy(array, 1, arrCopy, 0, arrCopy.length); return sumAvForsteRad + leggSammen2DArray(arrCopy); } /** * Returnerer summen av alle tallene i en array * @param array * @return summen av elementene i et array */ public static int sumArray(int[] array, int ind) { if (ind >= array.length) { return 0; } return array[ind] + sumArray(array, ++ind); } /** *Konkantinerer alle stringen i en liste i riktig * rekkefølge * *@param ord: alle stringen som skal konkantineres * *@return en string av alle ordene i lista i riktig * rekkefølge */ public static String hentStringRiktigVei (List ord){ if (ord.isEmpty()) return ""; String forsteOrd = ord.remove(0); return forsteOrd + hentStringRiktigVei(ord); } /** *konkantinerer alle stringen i en liste, i feil rekkefølge *param ord: alle stringen som skal konkantineres *@return en string av alle ordene i lista i feil rekkefølge */ public static String hentStringFeilVei ( List < String > ord){ if (ord.isEmpty()) return ""; String forsteOrd = ord.remove(0); return hentStringFeilVei(ord) + forsteOrd; } } class TestRekursiveMetoder { public static void main(String[] args){ boolean suksess = true; suksess = suksess && testLeggSammen2DArray(); suksess = suksess && testHentStringRiktigVei(); suksess = suksess && testHentStringFeilVei(); if (!suksess) { System.out.println("Noen tester feilet"); } else { System.out.println("Alle tester passerte."); } } static boolean testLeggSammen2DArray() { int[][] arr = new int[2][2]; arr[0][0] = 1; arr[0][1] = 2; arr[1][0] = 3; arr[1][1] = 4; int forventetSum = 10; int faktiskSum = RekursiveMetoder.leggSammen2DArray(arr); boolean vellykket = forventetSum == faktiskSum; if (!vellykket) { System.out.println("TEST FEILET: testLeggSammen2DArray"); System.out.println("Forventet verdi: " + forventetSum); System.out.println("Faktisk verdi: " + faktiskSum); } return vellykket; } static boolean testHentStringRiktigVei() { List ord = new ArrayList(); ord.add("Hei "); ord.add("paa "); ord.add("deg "); String forventetResultat = "Hei paa deg "; String faktiskResultat = RekursiveMetoder.hentStringRiktigVei(ord); boolean velykket = forventetResultat.equals(faktiskResultat); if (!velykket) { System.out.println("TEST FEILET: hentStringRiktigVei"); System.out.println("Forventet verdi: " + forventetResultat); System.out.println("Faktisk verdi: " + faktiskResultat); } return velykket; } static boolean testHentStringFeilVei() { List ord = new ArrayList(); ord.add("Hei "); ord.add("paa "); ord.add("deg "); String forventetResultat = "deg paa Hei "; String faktiskResultat = RekursiveMetoder.hentStringFeilVei(ord); boolean velykket = forventetResultat.equals(faktiskResultat); if (!velykket) { System.out.println("TEST FEILET: hentStringFeilVei"); System.out.println("Forventet verdi: " + forventetResultat); System.out.println("Faktisk verdi: " + faktiskResultat); } return velykket; } }