Oppgaver uke 14

 

Oppgave 1

Bruk en lenkeliste (f.eks den du lagde i oblig 3) fra tidligere til ? l?se de f?lgende oppgavene.

1a)

Skriv ut elementene i lenkelisten f?rst i riktig, s? i motsatt rekkef?lge ved hjelp av rekursjon. Hvor stor forskjell trenger det ? v?re i disse to metodene?

1b)

Finn st?rrelsen (lengden) p? lenkeliste med rekursjon.
 

Oppgave 2

2a)

Vi har en rekke med kaniner. Alle kaninene har to ?rer som st?r rett til v?rs. Vi ?nsker n? ? skrive en rekursiv metode for ? regne ut hvor mange ?rer kaninene totalt har st?ende opp i v?ret. Metoden skal ta inn antall kaniner.  

class KaninOreTeller {

    public static void main(String[] args) {

        System.out.println(tellKaninOrer(0)); //Forventet resultat 0

        System.out.println(tellKaninOrer(1)); //Forventet resultat 2

        System.out.println(tellKaninOrer(2)); //Forventet resultat 4

        System.out.println(tellKaninOrer(12)); //Forventet resultat 24

        System.out.println(tellKaninOrer(234)); //Forventet resultat 468

    }

    public static int tellKaninOrer(int antallKaniner){

        //din kode her

    }

}

 

2b)

Noen av kaninene har n? kun ett ?re st?ende opp. I dette tilfellet vil kaniner p? partallsplasser (2,4,6, ...) ha to ?rer oppe, mens kaniner p? oddetallsplasser (1,3,5, …) har kun ett ?re oppe. Endre metoden i 2a slik at den tar hensyn til dette. 

TIPS: antallKaniner avgj?r om den st?r p? en partalls- eller oddetallsplass)

class KaninOreTeller {

    public static void main(String[] args) {

        System.out.println(tellKaninOrer(0)); //Forventet resultat 0

        System.out.println(tellKaninOrer(1)); //Forventet resultat 1

        System.out.println(tellKaninOrer(2)); //Forventet resultat 3

        System.out.println(tellKaninOrer(12)); //Forventet resultat 18

        System.out.println(tellKaninOrer(234)); //Forventet resultat 351

    }

    public static int tellKaninOrer(int antallKaniner){

        //din kode her

    }

}

 

Oppgave 3

3a) 

Skriv en metode som rekursivt finner antall forekomster av en string i en annen string. Du kan anta at ingen av stringen er tomme (""). (Et tips her kan v?re ? bruke substring- og length-metodene til String).

class StringOprasjoner {

    public static void main(String[] args) {

        String str = "kattkukatt";

        System.out.println(antallSubStringer(str, "katt")); //Forventet resultat 2

        System.out.println(antallSubStringer(str, "ku")); //Forventet resultat 1

        System.out.println(antallSubStringer(str, "hund")); //Forventet resultat 0

    }


    public static int antallSubStringer(String str, String sub){

        //din kode her

    }

}

 

3b)

Lag en rekursiv metode som tar inn en string hvis en bokstav forekommer 2 ganger etter hverandre. F.eks. ved l i hello skal det plasseres en * i mellom de doble bokstavene (hello blir da hel*lo). (Et tips her kan v?re ? bruke substring-, length- og charAt-metodene til String)

class StringOprasjoner {

    public static void main(String[] args) {

        System.out.println(settInnStjerner("hello")); //Forventet resultat hel*lo
 
        System.out.println(settInnStjerner("helllo")); //Forventet resultat hel*l*lo

        System.out.println(settInnStjerner("helloo")); //Forventet resultat hel*lo*o

        System.out.println(settInnStjerner("")); //Forventet resultat 

        System.out.println(settInnStjerner("trollmannen")); //Forventet resultat trol*lman*nen 

    }

    public static String settInnStjerner(String str){

       //din kode her

    }

}


 

Publisert 7. mai 2023 23:50 - Sist endret 7. mai 2023 23:50