Skip to main content

Vad är en svansrekursion?

Svansrekursion är en typ av programmeringsmetodsamtal där en metod kallar sig själv och returnerar omedelbart värdet på det andra samtalet.Med andra ord inträffar svansrekursion 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, till exempel ett nummer, sträng eller något annat objekt.Void -metoder, som inte returnerar 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 samtalssamtal kan också hittas i en kontrollstruktur, vilket innebär att kontrollstrukturen i källkod kan avsluta metoden snarare än samtalet.Den viktiga skillnaden i detta fall är att en kontrollstruktur inte är ett programmeringsuttalande, utan en inbyggd del av datorspråket.

Svansrekursion finns på många datorspråk, inklusive Java och C ++.Ofta kan dessa rekursiva samtal skrivas om med andra medel, till exempel för slingor, medan slingor eller goto -uttalanden.Rekursionens användbarhet hittas när man skapar många sekventiella samtal till samma metod.Rekursion är ofta det renaste och enklaste sättet att utföra repetitiva uppgifter.

Ett vanligt exempel på svansrekursion är en metod som beräknar ett antal.Denna process är idealisk eftersom, med början av valfritt nummer, varje nummer innan det multipliceras tillsammans.Så för att hitta faktorn för 5 skulle den rätta processen att göra det vara att multiplicera 5*4*3*2*1.Rekursionen kommer in på grund av hur den faktoriska metoden är strukturerad: om faktoralet är 1, returnera 1, annars returnera faktorn för antalet som anges till metoden minus en.Den här metoden är också användbar eftersom den kan skrivas på ett likvärdigt sätt med endera typ av svansrekursion, med eller utan ett kontrolluttalande kring ett slutligt metodsamtal.

Svansrekursion är bara ett exempel på flera typer av rekursion.Konceptet i alla typer av rekursion är väsentligen detsamma, att på något sätt en metod kallar sig själv.Av dessa typer är distinktionen av svansrekursion att värdet på ett rekursivt samtal omedelbart returneras, och inget annat händer i samtalsmetoden efter det samtalet.