Mikä on hännän rekursio?

Häntärekursio on eräänlainen ohjelmointimenetelmäkutsu, jossa menetelmä kutsuu itseään ja palauttaa välittömästi toisen puhelun arvon. Toisin sanoen hännän rekursio tapahtuu, kun viimeinen lauseke menetelmän sisällä on toinen kutsu samaan menetelmään. Toisen menetelmäkutsun parametrit ovat yleensä erilaisia ​​kuin ensimmäisen, mutta tätä ei vaadita. Jotta tämä rekursio toimisi, itsessään kutsutun menetelmän on palautettava konkreettinen arvo, kuten luku, merkkijono tai jokin muu objekti. Tyhjät menetelmät, jotka eivät palauta arvoa, eivät toimi hyvin rekursiossa.

Vaatimus, jonka mukaan rekursiivisen puhelun on oltava kutsumismenetelmän viimeinen lauseke, ei välttämättä tarkoita, että rekursiivinen kutsu on menetelmän viimeinen rivi. Oikea hännän rekursiopuhelu löytyy myös ohjausrakenteen sisältä, mikä tarkoittaa, että lähdekoodissa ohjausrakenne voi lopettaa menetelmän puhelun sijasta. Tärkeä ero tässä tapauksessa on, että ohjausrakenne ei ole ohjelmointilausunto, vaan sisäänrakennettu osa tietokoneen kieltä.

Hännän rekursio on olemassa monilla tietokoneen kielillä, mukaan lukien Java ja C ++. Usein nämä rekursiiviset puhelut voidaan kirjoittaa uudelleen muilla keinoilla, kuten silmukoilla, kun taas silmukoilla tai goto -lausekkeilla. Rekursion hyödyllisyys havaitaan, kun luodaan useita peräkkäisiä puheluita samaan menetelmään. Toistuminen on usein puhtain ja helpoin tapa suorittaa toistuvia tehtäviä.

Yleinen esimerkki hännän rekursiosta on menetelmä, joka laskee luvun kertoimen. Tämä prosessi on ihanteellinen, koska mistä tahansa numerosta alkaen jokainen numero ennen sitä kerrotaan yhteen. Joten kertoimen 5 löytämiseksi oikea prosessi olisi kertoa 5*4*3*2*1. Rekursio tulee sisään kertoimenmenetelmän rakenteesta johtuen: jos kerroin on 1, palauta 1, muuten palauta menetelmälle annetun luvun kertoimet miinus yksi. Tämä menetelmä on hyödyllinen myös siksi, että se voidaan kirjoittaa vastaavasti käyttämällä kumpaakin hännän rekursiota, joko ohjauslausekkeen kanssa tai ilman viimeisen menetelmän kutsua.

Hännän rekursio on vain yksi esimerkki useista rekursiotyypeistä. Käsite kaikentyyppisissä rekursioissa on olennaisesti sama, että menetelmä jollain tavalla kutsuu itseään. Näistä tyypeistä hännän rekursion ero on se, että rekursiivisen puhelun arvo palautetaan välittömästi eikä mitään muuta tapaa soittomenetelmässä kyseisen puhelun jälkeen.