Rekursjon problemer i Java

Rekursjon problemer i Java


I en Java-program, er en rekursiv metode en metode som kaller seg. Rekursive metoder kan hjelpe programmerere å utforme en kode utdrag å forenkle et problem. Rekursive metoder også ofte ser ut til å være kortfattet, men å skape en effektiv rekursiv funksjon kan være svært utfordrende. Som med looper og andre kontrollstrukturer i Java, utviklere må jobbe gjennom hva som vil skje når en rekursiv funksjon utfører. Rekursive metoder føre til et sett med vanlige problemer når den ikke er riktig strukturert.

Problemløsning Failure

Programmerere bruker rekursive metoder for å løse spesielle problemer. Naturligvis en rekursiv metode vil ikke gi nyttig funksjonalitet hvis det ikke løser problemet det var designet for. Dette skjer noen ganger når programmereren har valgt å bruke en rekursiv funksjon der det ikke er hensiktsmessig. Vanligvis er en rekursiv metode ideell for situasjoner der du trenger for å løse et problem ved hjelp av iterative trinn. Hver gang metoden utføres, bør det gjøre problemet enklere og ta med programmet ett skritt nærmere å løse det. Sluttresultatet av den rekursive metoden skal være løsningen på problemet ditt, for eksempel å finne et element i en datainnsamling objekt.

No End sak

For at en rekursiv funksjon å jobbe uten å få programmet fast i en uendelig loop, må den ha en veldefinert slutten saken. Dette innebærer at det må foreligge en endelig utførelse, i stedet for å utføre fremgangsmåten uendelige. Programmerere ofte implementere dette ved hjelp av betinget utsagn inne i metoden, som i følgende eksempel:
public void doItRecursively (int num) {
if (num <1) tilbake;
else {
System.out.println (num);
doItRecursively (num / 2);
}}

Å kalle denne funksjonen, kan et program bruke følgende kode:
doItRecursively (10);

I dette tilfelle vil funksjonen utføre fem ganger, går ut på den femte iterasjon. Hver gang metoden utfører det kommer nærmere slutten scenario, som den betingede hvis setningen sjekker for. Dersom metoden ikke inneholde betinget utsagn, det ville reagere uendelige.

Ingen Rekursjon

Telleren problemet til en uendelige looping iterativ metode er en metode som ikke iterere i det hele tatt. Dette skjer også når den betingede uttalelsen ikke er riktig strukturert. For eksempel, gitt "doItRecursively" -metoden, er følgende endret hvis setningen ville føre til et problem:
if (num> 0) return;

Hvis fremgangsmåten bare kalles med positive heltallige verdier som parameter, vil dens innhold aldri iterere som sluttpunkt vil være nådd straks.

Feil metodekall

Hvis programmereren kaller en rekursiv metode ikke har en klar forståelse av dens funksjon, kan de bruke det på en måte som fører til endeløs gjentakelse eller ingen gjentakelse. For eksempel kan den følgende forandrede betinget kode i fremgangsmåten lett bli kalt ukorrekt:
if (num <0) tilbake;

Hvis metoden er bare kalles med positive heltall parameterverdier, det vil aldri nå dette endepunktet, og vil føre til en uendelig loop. Rekursive metoder kan forårsake mange av de samme fallgruver som løkker, slik at de krever praksis for effektiv gjennomføring.