Rekurencja

Przykład rekurencji w sztuce użytkowej (efekt Droste)
Trójkąt Sierpińskiego
Efekt nieskończonego lustra

Rekurencja, rekursja (z łac. recurrere, przybiec z powrotem) – odwoływanie się funkcji lub definicji do samej siebie.

W logice wnioskowanie rekurencyjne opiera się na założeniu istnienia pewnego stanu początkowego oraz zdania (lub zdań) stanowiącego podstawę wnioskowania (przy czym, aby cały dowód był poprawny, zarówno reguła, jak i stan początkowy muszą być prawdziwe). Istotą rekurencji jest tożsamość dziedziny i przeciwdziedziny reguły wnioskowania, wskutek czego wynik wnioskowania może podlegać tej samej regule zastosowanej ponownie.

Rekurencja jest podstawową techniką wykorzystywaną w funkcyjnych językach programowania. Należy jednak zachować ostrożność przy używaniu rekurencji w rzeczywistych programach. Ryzyko istnieje szczególnie przy przetwarzaniu dużej ilości głęboko zagnieżdżonych danych. Rekurencja może spowodować błąd przepełnienia stosu, chyba że język stosuje optymalizacje rekurencji ogonowej lub gdy stosuje się trampolinę.

W językach, w których nie ma możliwości użycia rekurencji, a w których funkcje są typem pierwszoklasowym, istnieje możliwość dodania obsługi rekurencji poprzez kombinator Y. Przykładem może być rachunek lambda.

Przykładem rekurencji jest obraz jaki powstaje, gdy postawimy przed sobą dwa lustra, lub gdy skierujemy kamerę na ekran, który wyświetla obraz z kamery, lub używając niektórych aplikacji do wideokonferencji, gdy udostępnia się pulpit i patrzy na swój udostępniony ekran wewnątrz okna tej aplikacji. Przykładem rekurencji jest także rosyjska zabawka Matrioszka.

Społeczność hackerów stosuje często rekurencyjne nazwy dla wolnego oprogramowania[1]. Niektóre strony w zabawny sposób pokazują czym jest rekurencja jak np. Google[2] czy Słownik Hackerów (ang. Jargon File)[3].

Przykłady

Na prostym przykładzie:

reguła: każdy ojciec jest starszy od swojego syna; każdy ojciec jest czyimś synem
stan początkowy: jestem 22-letnim mężczyzną
teza: ojciec ojca mojego ojca jest starszy ode mnie
dowód:
  1. mój ojciec jest starszy ode mnie
  2. mój ojciec jest czyimś synem
  3. ojciec mojego ojca jest starszy od mojego ojca
  4. ojciec mojego ojca jest czyimś synem
  5. itd.

Na przykładzie zastosowań matematycznych poniższa definicja ciągu Fibonacciego jest rekurencyjna:

  dla 

lub inaczej:

gdyż definiuje funkcję odwołując się w definicji do niej samej.

Każda definicja rekurencyjna potrzebuje przynajmniej jednego przypadku bazowego (nierekurencyjnego); w tym przypadku są to wartości dla 0 i 1. W przeciwnym wypadku nigdy się nie zakończy.

Dla przykładu, obliczenie wygląda następująco:

Innym przykładem jest wyliczanie największego wspólnego dzielnika za pomocą algorytmu Euklidesa:

  1. dla     oznacza tu resztę z dzielenia przez

lub inaczej:

Jeśli program nie jest w rzeczywistości rekurencyjny, to rekurencja może poważnie zwiększyć złożoność obliczeniową. Ponadto zawsze zwiększa ona zapotrzebowanie programu na pamięć operacyjną (chyba że zostanie użyta możliwa w pewnych przypadkach optymalizacja zwana rekurencją ogonową), gdyż wymaga zapamiętania m.in. adresów powrotu, pozwalających programowi „zorientować się”, do którego miejsca ma wrócić po zakończeniu jednego z wywołań rekurencyjnych. Inną częstą wadą rekurencji jest kompletnie niezależne rozwiązywanie podproblemów, tak, że czasem jeden problem jest rozwiązywany w kilku miejscach rozwinięcia rekurencji, np. w powyższym przykładzie obliczania niepotrzebnie jest dwukrotnie obliczana wartość (porównaj: programowanie dynamiczne). Takie problemy nie pojawiają się przy drugim z przykładów. Jednak, niezaprzeczalną zaletą rekurencji jest przejrzystość programów, które z niej korzystają.

Jedną z typowych sytuacji, w których stosuje się rekurencję, jest przeszukiwanie struktury danych w postaci nieregularnego drzewa, np. plików XML. Funkcja, która sprawdza czy w danym obiekcie XML istnieje element o określonej zawartości mogłaby wyglądać następująco (tutaj w PHP przy użyciu klasy SimpleXML):

    function find_text($text, $tree) {

        // sprawdź zawartość aktualnego elementu
        if ($text == (string)$tree) {
            return true;
        }

        // sprawdź wszystkie jego dzieci
        foreach ($tree as $node) {

            // tutaj następuje wywołanie rekurencyjne
            if (find_text($text, $node)) {
                return true;
            }

        }

        // nic nie znaleziono
        return false;
    }

Inne przykłady

Zobacz też

Przypisy

Linki zewnętrzne

Read other articles:

Penyakit Katup JantungInformasi umumSpesialisasiKardiologi Gambar yang menunjukkan katup jantung. Katup aorta dan katup mitral berada di jantung sebelah kiri dan katup pulmonal serta trikuspidal di jantung sebelah kanan Penyakit katup jantung adalah kelompok penyakit yang ditandai dengan kegagalan satu atau lebih katup jantung. Jantung memiliki 4 katup yaitu katup mitral, katup trikuspidal, katup pulmonal dan katup aorta. Keempat katup memiliki penutup ini membuka dan menutup selama proses si...

 

For the Scottish Parliament, see Scottish Parliament Building. Residence of the British monarch in Scotland Palace of HolyroodhouseThe Palace of Holyroodhouse viewed from the ForecourtLocation in Edinburgh, ScotlandShow map of EdinburghHolyrood Palace (the United Kingdom)Show map of the United KingdomGeneral informationTypeOfficial residenceArchitectural styleClassicalLocationRoyal Mile, Edinburgh, ScotlandCoordinates55°57′09″N 3°10′21″W / 55.95250°N 3.17250°Wþ...

 

Cet article est une ébauche concernant une élection en France et l’Ille-et-Vilaine. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. 1994 2001 Élections cantonales de 1998 en Ille-et-Vilaine 27 des 53 cantons d'Ille-et-Vilaine les 15 et 22 mars 1998 Type d’élection Élections cantonales Corps électoral et résultats Inscrits 289 517 Votants au 1er tour 168 871   58,33 % Votes e...

Cet article est une ébauche concernant la Chine. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Les villes sous-provinciales (副省级城市) sont des divisions administratives de la république populaire de Chine. Comme les villes-préfectures, elles sont situées au niveau immédiatement inférieur à la province ou à la région autonome. Leur maire dispose cependant de plus grands pouvoirs, puisque son st...

 

Questa voce sull'argomento allenatori di pallacanestro statunitensi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Piggy Lambert Piggy Lambert nel 1942 Nazionalità  Stati Uniti Altezza 168 cm Peso 52 kg Pallacanestro Ruolo Allenatore Termine carriera 1946 Hall of fame Naismith Hall of Fame (1960) Carriera Giovanili 1908-1911 Wabash Little Giants Carriera da allenatore 1912-1916Lebanon ...

 

Canadian politician James AuldOntario MPPIn office1954–1981Preceded byCharles MacOdrumSucceeded byBob RuncimanConstituencyLeeds Personal detailsBorn(1921-07-22)July 22, 1921Toronto, OntarioDiedJune 30, 1982(1982-06-30) (aged 60)Brockville, OntarioPolitical partyProgressive ConservativeSpouseNancy Eleanor GilmourOccupationWholesalerMilitary serviceBranch/serviceCanadian ArmyRankCaptainUnitQueen's Own RiflesBattles/warsD-Day landings James Alexander Charles Auld (July 22, 1921 – June 3...

Battle between Iraq and ISIL For the battle that ended in May 2015, see Battle of Ramadi (2014–2015). For other battles in Ramadi, see Battle of Ramadi (disambiguation). Battle of Ramadi (2015–2016)Part of the War in Iraq and the Anbar campaign (2015–2016)Ramadi in 2008Date11 August 2015 – 9 February 2016(5 months, 4 weeks and 1 day)LocationRamadi, Anbar Governorate, Iraq33°24′58″N 43°18′00″E / 33.416°N 43.3°E / 33.416; 43.3Result Ira...

 

Statutory board in Singapore This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: National Heritage Board Singapore – news · newspapers · books · scholar ·...

 

Ministerio de Defensa Nacional Escudo de Uruguay Vista del Edificio General ArtigasLocalizaciónPaís UruguayInformación generalSigla MDNJurisdicción UruguayTipo Ministerio de EstadoSede Edificio General Artigas, Avenida 8 de Octubre 2628, MontevideoOrganizaciónMinistro Armando CastaingdebatSubsecretario Rivera ElgueEntidad superior Poder EjecutivoDependencias Fuerzas ArmadasHistoriaFundación 22 de diciembre de 1828 (195 años) Ministerio de Guerra y MarinaNotas El ministro de E...

Pour les articles homonymes, voir Jasmin (homonymie). Judith JasminTrois réalisatrices de la radio de Radio-Canada (CBF) en 1945. De gauche à droite : Marcelle Barthe, Berthe Lavoie et Judith Jasmin.BiographieNaissance 10 juillet 1916TerrebonneDécès 20 octobre 1972 (à 56 ans)MontréalNationalité canadienneActivité JournalisteAutres informationsA travaillé pour Société Radio-CanadaDistinction Personnage historique désigné (d) (2021)modifier - modifier le code - modifier ...

 

2003 single by Blue U Make Me WannaSingle by Bluefrom the album One Love B-sideMade for Loving YouReleased17 March 2003 (2003-03-17)StudioStarGate (Norway)Length3:39Label Innocent Virgin Songwriter(s) Steve Robson John McLaughlin Harry Wilkins Producer(s)StarGateBlue singles chronology Sorry Seems to Be the Hardest Word (2002) U Make Me Wanna (2003) Guilty (2003) U Make Me Wanna is a song by English boy band Blue. It was released as the third and final single from their second ...

 

Marche sur Washington pour l'emploi et la liberté La foule rassemblée sur le mall vue depuis le Lincoln Memorial. Informations Date 28 août 1963 (60 ans) Localisation Washington, États-Unis Caractéristiques Organisateurs Congress of Racial Equality, Southern Christian Leadership Conference, Student Nonviolent Coordinating Committee, National Association for the Advancement of Colored People, National Urban League, United Auto Workers, National Council of the Churches of Christ in A...

2016年美國總統選舉 ← 2012 2016年11月8日 2020 → 538個選舉人團席位獲勝需270票民意調查投票率55.7%[1][2] ▲ 0.8 %   获提名人 唐納·川普 希拉莉·克林頓 政党 共和黨 民主党 家鄉州 紐約州 紐約州 竞选搭档 迈克·彭斯 蒂姆·凱恩 选举人票 304[3][4][註 1] 227[5] 胜出州/省 30 + 緬-2 20 + DC 民選得票 62,984,828[6] 65,853,514[6]...

 

Swedish politician (born 1973) Janine Alm EricsonAlm Ericson in 2017Member of the RiksdagIncumbentAssumed office 29 September 2014ConstituencyVästra Götaland County West Personal detailsBorn (1973-10-31) 31 October 1973 (age 50)Political partyGreen Party Janine Alm Ericson (born 31 October 1973) is a Swedish politician.[1] Since September 2014,[update] she serves as Member of the Riksdag. She represented the constituency of Västra Götaland County North in her...

 

Не плутати з Верховним Головнокомандувачем Збройних Сил України. Не плутати з Начальником Генерального штабу Збройних сил України. Головнокомандувач Збройних Сил України Штандарт Головнокомандувача Збройних Сил України Посаду обіймаєГенерал-полковникСирський Олекс...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (يونيو 2019) ويليام أراوغو (بالإسبانية: William Francisco Araujo Ogonaga)‏    معلومات شخصية الميلاد 5 يونيو 1979 (45 سنة)[1]  كيتو  الطول 1.74 م (5 قدم 8 1⁄2 بوصة) مركز ال...

 

Military museum in Macedonia, GreecePavlos Melas MuseumΜουσείο Παύλου ΜελάOutside viewEstablished1970sLocation Melas, Macedonia, GreeceCoordinates40°42′14″N 21°15′54″E / 40.70383473894858°N 21.26487001817638°E / 40.70383473894858; 21.26487001817638TypeMilitary museum The Pavlos Melas Museum is located in the village of Melas, in the north part of the regional unit of Kastoria, Macedonia, Greece.[1] Description The building belonged ...

 

Jeronim De Rada Född29 november 1814[1]Macchia Albanese[2], ItalienDöd28 februari 1903[3][4] (88 år)San Demetrio Corone, ItalienMedborgare iKungariket ItalienUtbildad vidNeapels universitet Federico II SysselsättningFörfattare, historiker, journalist, poetRedigera Wikidata Jeronim De Rada, född 1814, dog 1903, arberesjisk (italoalbansk) författare och poet. Författade bland annat Canti di Milosao (1836), Canti di Serafna Topia (1843), Rapsodie d'un poema albanese raccol...

American politician Lawrence O'Bryan BranchMember of the U.S. House of Representativesfrom North Carolina's 4th districtIn officeMarch 4, 1855 – March 3, 1861Preceded bySion Hart RogersSucceeded byJohn T. Deweese (1868) Personal detailsBornNovember 28, 1820 (1820-11-28)Enfield, North CarolinaDiedSeptember 17, 1862 (1862-09-18) (age 41)Sharpsburg, MarylandPolitical partyDemocraticSpouseNancy Haywood BlountAlma materUniversity of North Carolina at Chapel HillPri...

 

American jazz pianist and composer (1910–1981) Mary Lou WilliamsWilliams c. 1946Background informationBirth nameMary Elfrieda ScruggsBorn(1910-05-08)May 8, 1910Atlanta, Georgia, U.S.DiedMay 28, 1981(1981-05-28) (aged 71)Durham, North Carolina, U.S.GenresJazz, gospel, swing, third stream, bebopOccupation(s)Musician, composer, arranger, bandleaderInstrument(s)PianoYears active1920–1981LabelsBrunswick, Decca, Columbia, Savoy, Asch, Folkways, Victor, King, Atlantic, Circle, Vogue, Presti...