import java.util.List; public 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){ return leggSammen2DArrayRek(0, array); } private static int leggSammen2DArrayRek(int teller, int[][] array){ if(teller == array.length) return 0; return leggSammenArray(0, array[teller]) + leggSammen2DArrayRek(teller + 1, array); } private static int leggSammenArray(int teller, int[] array){ if(teller == array.length) return 0; return array[teller] + leggSammenArray(teller + 1, array); } /*Kommentar: Denne maaten aa gjoore det paa vil endre ord listen (baade i riktig og i feil vei), siden vi bruker remove. vis man ikke onsker det maa man ha en hjelpe metode slik at man kan ha en teller og bruke get :)) */ /** *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 ""; return ord.remove(0) + 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 ord){ if(ord.isEmpty()) return ""; String nyttOrd = ord.remove(0); return hentStringFeilVei(ord) + nyttOrd; } /** *Leter nedover og til høyere i arrayet for å finne en tekst . Dette løses rekursivt *@param ord: arrayet som innholder alle strengene *@param indeks1: bestemmer om man skal "gå opp eller ned" i arrayet *@param indeks2: bestemmer om man skal "gå til høyere eller venstere" i arrayet *@return en tekst. */ public static String finnTekst(String[][] ord, int indeks1, int indeks2){ //hvis indeksen er utenfor ord-arrayet returnerer vi med en gang if(ord.length <= indeks1 || ord[0].length <= indeks2) return null; //hvis plassen vi er paa naa er null returerer vi bare null if(ord[indeks1][indeks2] == null) return null; //vi rekusjerer begge veier, både ned og til hoyere String ned = finnTekst(ord, indeks1 + 1, indeks2); String hoyre = finnTekst(ord, indeks1, indeks2 + 1); //sjekker hvilke av veiene som er en sti og legger til ordet vi er paa naa if(ned != null) return ord[indeks1][indeks2] + " " + ned; if(hoyre != null) return ord[indeks1][indeks2] + " " + hoyre; return ord[indeks1][indeks2]; } }