I ett Java -program , är en rekursiv metod en metod som kallar sig . Rekursiva metoder kan hjälpa programmerare att konstruera en kod utdrag för att förenkla ett problem . Rekursiva metoder också ofta verkar vara kortfattad , men att skapa en effektiv rekursiv funktion kan vara mycket utmanande . Som med loopar och andra kontrollstrukturer i Java , utvecklare måste arbeta igenom vad som ska hända när en rekursiv funktion exekverar . Rekursiva metoder orsaka en rad vanliga problem när inte korrekt strukturerade . Problemlösning Fel
Programmerare använder rekursiva metoder för att lösa särskilda problem . Naturligtvis en rekursiv metod inte kommer att ge användbar funktion om det inte löser problemet den var avsedd för . Detta händer ibland när programmeraren har valt att använda en rekursiv funktion där det inte är lämpligt . Generellt är en rekursiv metod idealisk för situationer där du behöver för att lösa ett problem med hjälp av iterativa steg . Varje gång metoden körs , bör det göra problemet enklare och föra ditt program ett steg närmare att lösa det . Slutresultatet av den rekursiva metoden bör vara lösningen på ditt problem , till exempel lokalisering av ett element i en datainsamling objekt .
No End Case
För en rekursiv funktion för att arbeta utan att få ditt program fastnat i en oändlig loop , måste den ha en väldefinierad end fallet . Detta innebär att det måste finnas ett slutligt utförande , snarare än metoden verkställande oändlighet . Programmerare genomför ofta detta med villkorssatser inuti metoden , som i följande exempel : public void doItRecursively ( int num ) {if ( num < 1 ) return ; else { System.out.println ( num ) ; doItRecursively ( num /2 ) ; } }
att kalla denna funktion , kan ett program använda följande kod : doItRecursively ( 10 ) ,
i detta fall funktionen kommer att utföra fem gånger , spännande på femte iteration . Varje gång metoden exekverar den kommer närmare slutet scenario , då det villkorliga if-sats kontrollerar för . Om metoden inte innehåller villkorlig uppgift , skulle det iterera oändlighet .
Ingen rekursivitet
Räknaren frågan till ett oändligt looping iterativ metod är en metod som inte iterera alls. Detta händer även när villkorlig uppgift inte är korrekt utformad . Till exempel , med tanke på den " doItRecursively " metoden , följande ändras om uttalande skulle orsaka ett problem : if ( num > 0 ) return ;
Om metoden bara kallas med positiva heltalsvärden som parameter , dess innehåll kommer aldrig att iterera som slutpunkt ska ha nåtts genast .
Felaktigt metodanrop
p Om programmeraren kräver en rekursiv metod inte har en klar uppfattning om dess funktion , kan de använda den på ett sätt som orsakar ändlösa iteration eller ingen iteration . Till exempel kan följande förändrad villkorad koden i metoden lätt kallas felaktigt : if ( num < 0 ) return ;
Om metoden bara kallas med positiva heltal parametervärden , kommer det aldrig att nå denna slutpunkt och kommer att orsaka en oändlig loop . Rekursiva metoder kan orsaka många av samma fallgropar som loopar , så de kräver praxis för effektivt genomförande .