Vad är en svansrekursion?
Rekursion för svans är en typ av programmeringsmetodsamtal där en metod anropar sig själv och returnerar omedelbart värdet på det andra samtalet. Med andra ord, svansrekursion inträffar när det slutliga uttalandet i en metod är ett annat samtal till samma metod. Parametrarna i det andra metodsamtalet skiljer sig i allmänhet från de första, men detta krävs inte. För att denna rekursion ska fungera måste metoden som kallas i sig själv returnera ett konkret värde, såsom ett nummer, en sträng eller något annat objekt. Inga metoder, som inte ger ett värde, fungerar inte bra för rekursion.
Kravet att ett rekursivt samtal måste vara det sista uttalandet i sin samtalsmetod betyder inte nödvändigtvis att det rekursiva samtalet är den sista raden i metoden. Ett ordentligt svansrekursionssamtal kan också hittas inuti en kontrollstruktur, vilket innebär att styrkonstruktionen i källkod kan avsluta metoden snarare än samtalet. Den viktiga skillnaden i detta fall är att en kontrollstruktur inte är ett programmeringsförklaring, utan en inbyggd del av datorspråket.
Rekursion för svans finns på många datorspråk, inklusive Java och C ++. Ofta kan dessa rekursiva samtal skrivas om på andra sätt, till exempel för öglor, medan öglor eller goto-uttalanden. Rekursionsverktyget hittas när du skapar många sekventiella samtal till samma metod. Rekursion är ofta det renaste och enklaste sättet att utföra upprepade uppgifter.
Ett vanligt exempel på svansrekursion är en metod som beräknar faktorn för ett nummer. Den här processen är idealisk eftersom alla siffror börjar vid varje nummer innan det multipliceras tillsammans. Så, för att hitta fabriken om 5, skulle den korrekta processen att göra det vara att multiplicera 5 * 4 * 3 * 2 * 1. Rekursionen kommer in på grund av hur factorialmetoden är strukturerad: om factorial är 1, returnera 1, annars returnera factorial för numret som ges till metoden minus en. Den här metoden är också användbar eftersom den kan skrivas på ett likvärdigt sätt med hjälp av endera typen av svansrekursion, med eller utan ett kontrolluttalande kring ett slutligt metodsamtal.
Rekursion för svans är bara ett exempel på flera typer av rekursion. Konceptet i alla typer av rekursioner är i huvudsak detsamma, som på något sätt en metod kallar sig själv. Av dessa typer är skillnaden mellan svansrekursion att värdet av ett rekursivt samtal omedelbart returneras, och ingenting annat händer i samtalsmetoden efter det samtalet.