I et Java- program , er en rekursiv metode en metode som kaller seg . Rekursive metoder kan hjelpe programmerere å designe 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 kontrollenheter strukturer 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 bruke rekursive metoder for å løse spesielle problemer . Naturligvis en rekursiv metode ikke vil gi nyttig funksjonalitet hvis det ikke løser problemet det er 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ører , bør det gjøre problemet enklere og bringe programmet ett skritt nærmere å løse det. Sluttresultatet av den rekursive metoden bør være løsningen på problemet ditt, for eksempel å finne et element i en datainnsamling objekt.
No End sak
For en rekursiv funksjon for å jobbe uten å få programmet fast i en uendelig loop, må den ha en veldefinert slutten saken. Dette betyr at det må være en endelig gjennomføring, snarere enn den metoden utfører uendelige . Programmerere ofte gjennomføre 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 (tall ); doItRecursively ( num /2 ) ;} }
å kalle denne funksjonen , kan et program bruke følgende kode : doItRecursively ( 10),
i dette tilfellet funksjonen vil utføre fem ganger , avslutter den femte iterasjon. Hver gang metoden utfører det kommer nærmere slutten scenario , som den betingede hvis setningen sjekker for . Hvis metoden ikke inneholdt den betingede utsagn , ville det iterere uendelige .
Ingen Rekursjon
Telleren problemet til en uendelig looping iterativ metode er en metode som ikke iterere ikke 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;
p Hvis metoden blir bare kalt med positive heltall som parameter, dets innholdet vil aldri iterere som endepunktet vil være nådd med en gang .
feil Method Calls
p Hvis programmereren kaller en rekursiv metode ikke har en klar forståelse av sin funksjon , kan de bruke den på en måte som fører til endeløs iterasjon eller ingen iterasjon. For eksempel kan følgende endrede betinget kode i metoden lett bli kalt feil : if ( num < 0 ) tilbake;
p Hvis metoden blir bare kalt med positive heltall parameterverdier , vil det aldri nå dette endepunktet og vil føre til en uendelig loop. Rekursive metoder kan føre til mange av de samme fallgruvene som looper , så de krever praksis for effektiv gjennomføring .