I et Java-program , er en rekursiv metode en metode, der kalder sig selv . Rekursive metoder kan hjælpe programmører til at designe en kode uddrag til at forenkle et problem. Rekursive metoder også ofte synes at være kortfattet , men at skabe en effektiv rekursiv funktion kan være meget udfordrende . Som med loops og andre kontrolforanstaltninger strukturer i Java , har udviklerne til at arbejde gennem , hvad der vil ske, når en rekursiv funktion udfører . Rekursive metoder forårsage en række fælles problemer, når de ikke er korrekt struktureret . Problem Løsning Manglende
Programmører bruger rekursive metoder til at løse særlige problemer. Naturligvis en rekursiv metode vil ikke give nyttig funktionalitet , hvis det ikke løser det problem, den var beregnet til . Dette sker sommetider når programmøren har valgt at bruge en rekursiv funktion, hvor det ikke er hensigtsmæssigt . Generelt en rekursiv metode er ideel til situationer, hvor du har brug for at løse et problem ved hjælp af iterative trin. Hver gang metoden udfører , bør det gøre problemet enklere og bringe dit program et skridt tættere på at løse det . Det endelige resultat af den rekursive metode skulle være løsningen på dit problem , for eksempel at placere et element i en dataindsamling objekt.
No End Case
For en rekursiv funktion til at fungere uden at få dit program fast i en uendelig løkke , skal det have en veldefineret ende sagen. Dette betyder , at der skal være en endelig udførelse , snarere end fremgangsmåden fuldbyrdende uendeligt. Programmører ofte gennemføre denne hjælp betingede udsagn inde i metoden , som i det følgende eksempel: public void doItRecursively ( int num ) { if ( num <1 ) return ; else { System.out.println ( num ), doItRecursively ( num /2) ;}}
For at kalde denne funktion kan et program bruge følgende kode : doItRecursively (10);
i dette tilfælde vil funktionen udføre fem gange , afslutter den femte iteration . Hver gang fremgangsmåden udfører det kommer tættere på slutningen scenario, som den betingede hvis redegørelse kontrollerer for . Hvis metoden ikke indeholder den betingede udsagn, ville det gentage uendeligt.
Ingen Recursion
Tælleren problemet til et uendeligt looping iterativ metode er en metode der ikke gentage overhovedet . Dette sker også , når den betingede erklæring er ikke korrekt struktureret. For eksempel på grund af den " doItRecursively " metode, således ændres, hvis erklæring vil medføre et problem : if ( num > 0) tilbagevenden;
Hvis metoden kun kaldes med positive heltal værdier som parameter , dens indholdet vil aldrig gentage som slutpunktet vil være nået lige væk.
Forkert metodekald
p Hvis programmøren kalder en rekursiv metode ikke har en klar forståelse af funktion, kan de anvende den på en måde , der forårsager endeløs iteration eller ingen gentagelse. For eksempel kunne den følgende ændrede betingede kode i metoden nemt blive kaldt forkert : if ( num <0 ) return ;
Hvis metoden kun kaldes med positive heltal parameterværdier , vil det aldrig nå dette slutpunkt og vil forårsage en uendelig løkke . Rekursive metoder kan forårsage mange af de samme faldgruber som loops, så de kræver praksis for effektiv gennemførelse .