/* Metoder gjennomg?tt under repetisjonskurset eller brukt i Kahoot sp?rsms?l, samt l?sningsforslag til oppgavene */ import java.io.*; // trenger for oppgave 6 class Rekursjonsmetoder { public static void main(String[] args) { tellerRekursiv(3); System.out.println("3! = " + fakultet(3)); skrivUtMystisk(14, "Elefanten Dumbo"); // fra kahoot System.out.println("Kvadratet av 5 er " + kvadrattall(5)); // bruke metodene fra oppgavene: // oppgave 1 System.out.println("Summen opp til 6: " + sumTilN(6)); // oppgave 2 System.out.println("Produketet opp til 5: " + produktTilN(5)); // oppgave 3 String tekst = "Snart er det eksamen"; char e = 'e'; char c = 'c'; if (finnesITekst(tekst, e)){ System.out.println(e + " finnes i teksten " + tekst); } else { System.out.println(e + " finnes ikke i teksten " + tekst); } if (finnesITekst(tekst, c)){ System.out.println(c + " finnes i teksten " + tekst); } else { System.out.println(c + " finnes ikke i teksten " + tekst); } // oppgave 4 int[] tall = {70, 4, 21, 8, 9, 65}; System.out.print("Det minste tallet av "); for (int i = 0; i < tall.length; i ++) { System.out.print(tall[i] + " "); } System.out.println("er: " + finnMinste(tall)); // oppgave 5 skrivBokstaver(tekst); // tekst = "Snart er det eksamen"; // oppgave 6 String mappenavn = System.getProperty("user.dir"); visFiler(mappenavn); } public static void tellerRekursiv(int n) { /* Metode som skriver ut tallene fra n til og med 0 og oppo igjen til n */ System.out.println("Tallet er " + n); if (n == 0 ) { return; } tellerRekursiv(n-1); System.out.println("Tallet er " + n); } public static int fakultet(int n) { /* Metode som beregner n fakultet */ if (n == 1) return 1; return n*fakultet(n-1); } public static void skrivUtMystisk(int indeks, String tekst) { /* Metode brukt i kahoot-oppgave */ if (indeks <= 1) { System.out.println(tekst.charAt(0)); return; } if (indeks < tekst.length()/2) { System.out.print(tekst.charAt(indeks + 1)); skrivUtMystisk(indeks - 1, tekst); } else { System.out.print(tekst.charAt(indeks -1)); skrivUtMystisk(indeks -2, tekst); } } public static int kvadrattall(int n) { /* Metode brukt i kahoot-oppgave */ if (n == 1) return 1; return kvadrattall(n-1) + 2*n - 1; } public static int sumTilN(int n) { /* Oppgave 1 - summen av tallene fra n til og med 1 */ if (n == 1) { // alternativ: if (n <= 1) return n; return 1; } return n + sumTilN(n -1); } public static int produktTilN(int n) { /* Oppgave 2 - produktet av tallene fra n til og med 1 */ if (n == 1) { // alternativ: if (n <= 1) return 1; return 1; } return n * produktTilN(n -1); } public static boolean finnesITekst(String tekst, char bokstav){ /* Oppgave 3 - returnerer true om bokstaven finnes i teksten, eller false. Sjekker forste bokstav i teksten og sender resten av stringen med i neste kall paa finnesITekst */ boolean sjekkForste = tekst.charAt(0) == bokstav; if (sjekkForste || tekst.length() == 1) { return sjekkForste; } return finnesITekst(tekst.substring(1), bokstav); } public static int finnMinste(int[] tallArray) { /* Hjelpemetode til oppgave 4 - starter rekursjonen */ return finnMinste(0, tallArray); } public static int finnMinste(int indeks, int[] tallArray) { /* Oppgave 4 - finn minste tall i en array av int'er Det finnes flere alternative m?ter ? l?se denne */ if (indeks == tallArray.length -1) { return tallArray[indeks]; } int returnert = finnMinste(indeks+1, tallArray); if (returnert < tallArray[indeks]) { return returnert; } else { return tallArray[indeks]; } } public static void skrivBokstaver(String tekst) { /* Hjelpemetode til oppgave 5 - starter rekursjonen */ skrivBokstaver(0, tekst); } public static void skrivBokstaver(int indeks, String tekst) { /* Oppgave 5 - skriv ut hver bokstav i en tekst Alternativ: bruke substring */ System.out.println(tekst.charAt(indeks)); if (indeks == tekst.length() -1) { return; } skrivBokstaver(indeks + 1, tekst); } public static void visFiler(String mappenavn) { /* Hjelpemetode til oppgave 6 - starter rekursjonen */ File[] filer = new File(mappenavn).listFiles(); visFiler(filer); } public static void visFiler(File[] filer) { /* Oppgave 6 - skriver ut navnet paa alle filer i en mappe og alle undermapper */ for (File fil: filer) { if (fil.isDirectory()) { visFiler(fil.listFiles()); } else { System.out.println(fil.getName()); } } } }