OqPoWah.com

Algoritem rekurziven: opis, analiza, funkcije in primeri

Sodobno razumevanje rekurzije: definicija funkcionalnosti in dostop do nje od zunaj in iz te funkcionalnosti. Menijo, da so rekurzijo rojevali matematiki: faktorski izračun, neskončne serije, fraktali, neprekinjene frakcije ... Vendar pa je povsod mogoče najti povsod. Objektivni naravni zakoni "računajo" rekurzijo kot svoj osnovni algoritem in obliko izražanja (obstoj) ne toliko kot predmeti materialnega sveta kot na splošno osnovni algoritem gibanja.

rekurzivni algoritem

Ljudje različnih specialitet na različnih področjih znanosti in tehnologije uporabljajo rekurzivni algoritem f (x), kjer je "x ~ / = f (x)". Funkcija, ki se imenuje, je močna rešitev, vendar je oblikovanje in razumevanje te rešitve v večini primerov zelo težka naloga.

V antičnih časih je bila rekurzija uporabljena za povečanje prostora palače. S sistemom ogledal, ki so obrnjeni drug proti drugemu, lahko ustvarite osupljive volumetrične prostorske učinke. Ampak je enostavno razumeti, kako nastaviti ta ogledala? In še težje je ugotoviti, kje se nahaja točka v prostoru, ki se odraža skozi več ogledal.

Rekurzija, rekurzivna algoritmi: pomen in sintakso

Nalogo, ki je oblikovana z ponavljanjem zaporedja operacij, je mogoče rekurzivno rešiti. Preprost algoritem (računanje kvadratne enačbe, skript za polnjenje spletne strani z informacijami, branje datoteke, pošiljanje sporočila ...) ne zahteva uporabe rekurzije.

Glavne razlike algoritma, ki omogoča rekurzivno rešitev:

  • obstaja algoritem, ki ga je treba večkrat izvesti;
  • algoritem potrebuje podatke, ki se vsakokrat spreminjajo;
  • Algoritma se ni treba vedno spremeniti;
  • je končni pogoj: algoritem je rekurziven - ne neskončen.

Na splošno ni mogoče trditi, da je ena izvedba obvezen pogoj za odsotnost priložnosti za rekurzijo. Prav tako ne morete zahtevati obveznega končnega pogoja: neskončne rekurzije imajo lastno področje uporabe.

Algoritem je rekurziven: kadar se zaporedje operacij izvaja večkrat, na podatkih, ki se vsakokrat spreminjajo in vsakič dajo nov rezultat.

Formula za rekurzijo

Matematično razumevanje rekurzije in njegovega analoga pri programiranju sta drugačna. Matematika, čeprav značilna za programiranje, vendar programiranje je mnogo višji red matematike.

rekurzivni algoritem f

Dobro napisan algoritem je kot ogledalo avtorjevega intelekta. Splošna rekurzivna formula pri programiranju "f (x)", kjer ima "x ~ / = f (x)" vsaj dve različici interpretacije. Tukaj je "~" podobnost ali odsotnost rezultata in "=" je prisotnost rezultata funkcije.

Prva možnost: dinamika podatkov.

  • funkcija "f (x)" ima algoritem rekurzivno in ni spremenljivko;
  • "X" in rezultat "f (x)" - vsakokrat ima nove vrednosti, rezultat "f (x)" je nov parameter "x" te funkcije.

Druga možnost: dinamika kode.

  • funkcija "f (x)" ima več algoritmov, ki izboljšujejo (analizirajo) podatke;
  • analiza podatkov - en del kode in izvajanje rekurzivnih algoritmov, ki izvajajo želeno dejanje - drugi del kode;
  • rezultat funkcije "f (x)" ni.

Pomanjkanje rezultatov je normalno. Programiranje ni matematika, rezultat ni nujno tam. Funkcija, ki se izvaja rekurzivno, lahko preprosto razčleni mesta in napolni bazo podatkov ali ustvari želene primere predmetov glede na vhodni vhodni tok.

Podatki in rekurzije

Programiranje rekurzivne algoritme - to ni faktorski, v katerih funkcija dobi vsakič, ko je to drugega kot sicer v manjšem ali večjem strani - izvedba odvisna od želje razvijalec.

Ne glede na to, tako šteti faktorskem "8!«, Gibljejo od 0, 1, 2, ..., ali obratno 8, 7, 6 ... Podobno izračun matematično zaporedje, ki je zabeležena fraktalnega ali neskončna serije in preprosto matematično formulo, v tem zaporedju, algoritem, ki strogo sledi tej formuli.

Obdelava informacij je "matematika" popolnoma drugačnega reda. Rekurzivne funkcije in algoritmi delujejo s črkami, besedami, besednimi zvezami, stavki in odstavki. Vsaka naslednja raven uporablja prejšnjo.

Vhodni podatkovni tok se analizira v številnih pogojih, vendar je postopek analize ponavadi rekurziven. Nima smisla pisati edinstvenih algoritmov za vse različice vhodnega toka. Obstajati mora en funkcionalen. Tukaj so rekurzivni algoritmi primeri, kako ustvariti izhodni tok, ki ustreza vhodu. To ni posledica vnosa rekurzivnega algoritma, ampak to je želena in potrebna rešitev.

Abstrakcija, rekurzija in OOP

Objektno programiranje (OOP) in rekurzija so bistveno drugačni subjekti, vendar se popolnoma dopolnjujejo. Abstrakcija nima nič opraviti z rekurzijo, ampak skozi prizmo OOP omogoča izvajanje kontekstualne rekurzije.

Na primer, podatki se razčlenijo in Izstopajte ločene črke, besede, besedne zveze, stavki in odstavki. Očitno bo razvijalec omogočil ustvarjanje primerkov predmetov teh petih vrst in jih ponudil reševanje rekurzivnih algoritmov na vsaki ravni.

programiranje rekurzivnih algoritmov

Medtem, če na ravni črk "ni smisla iskati smisla", se semantika pojavi na ravni besed. Besedo lahko razdelite v glagole, samostalne primere, primere, predloge ... Lahko nadaljujete in določite primer.

Na ravni stavkov se semantiki dopolnjujejo znaki ločil in logika kombinacije besed. Na stopnji stavka najdemo naprednejšo raven semantike, odstavek pa lahko razumemo kot popolno misel.

Objektno usmerjen razvoj predeterminira dediščino lastnosti in metod in predlaga zagon hierarhije predmetov od ustvarjanja absolutno abstraktnega prednika. V tem primeru ni nobenega dvoma, da bo analiza vsakega potomca rekurzivna in na mnogih položajih (pisem, besed, besednih zvez in stavkov) na tehnični ravni ne bo preveč različna. Odstavki, kot dopolnjene misli, se lahko izstopajo s tega seznama, ne pa tudi bistva.

Pomembno je, da se lahko velik del algoritma oblikuje na nivoju abstraktnega prednika, ki ga rastejo na ravni vsakega potomca s pomočjo podatkov in metod, ki jih imenujemo abstraktni nivo. V tem kontekstu abstrakcija odpira nova obzorja za rekurzijo.

Zgodovinske značilnosti OOP

OOP je prišel v svet programov dvakrat, čeprav nekateri strokovnjaki lahko poudarijo pojav cloud tehnologij in sodobne ideje o predmetih in razredih, kot nov krog v razvoju IT tehnologij.

Izraza ", ki so predmet" in "predmet" v tem kontekstu PLO, običajno pripisana 50. in 60. letih prejšnjega stoletja, vendar jih povezujejo z 1965 in prihodom Simula jezika, Lisp, Algol, Smalltalk.

V teh dneh programiranje ni bilo posebno in se ni moglo ustrezno odzvati na revolucionarne koncepte. Pred bojem idej in programskih stilov (C / C ++ in Pascal - večinoma) je bil še vedno daleč, podatkovne baze pa so se še vedno oblikovale konceptualno.

rekurzivni rekurzivni algoritmi

V poznih 80-ih in zgodnjih 90-ih Pascal pojavil predmetov in vse misli razredov v C / C ++ - je pomenil nov krog interesu PLO, in da je, ko so orodja, ki so še posebej programski jeziki postali ne le podpora objektno usmerjen ideje, ampak se razvijajo tudi po njih.

Seveda, če je pred rekurzivni algoritem je preprost funkcija uporabljena v splošnem kodo programa, zdaj rekurzija lahko postane del lastnosti (razred) nekega predmeta, v zvezi z dediščino ponuja zanimive priložnosti.

Značilnosti moderne OOP




Razvoj OOP je najprej razglasil predmete (razrede) kot zbirko podatkov in lastnosti (metode). Dejansko gre za podatke, ki imajo sintakso in pomen. Toda potem ni bilo mogoče predstaviti OOP-a kot orodja za upravljanje stvarnih predmetov.

rekurzivne funkcije in algoritmi

OOP je postal orodje za upravljanje predmetov »računalniške narave«. Skript, gumb, element menija, menijska vrstica, oznaka v oknu brskalnika je predmet. Ampak ne strojno orodje, živilski produkt, besedo ali ponudbo. Pravi predmeti so ostali zunaj obsega objektno usmerjenega programiranja, računalniška orodja pa so pridobila novo inkarnacijo.

Zaradi razlik med priljubljenimi programskimi jeziki se je pojavilo veliko OOP narečij. Po semantiki so praktično enakovredni in njihova usmeritev k instrumentalni sferi namesto na aplikacijo omogoča, da se opis realnih predmetov presega meje algoritmov in zagotovi njihovo navzkrižno platformo in medjezikovno »obstoj«.

Staki in mehanizmi za klicne funkcije

Mehanizmi za klicne funkcije (postopki, algoritmi) zahtevajo prenos podatkov (parametrov), vrnejo rezultat in shranijo naslov operaterja, ki mora biti po končani funkciji (postopek) prejel nadzor.

rekurzivni algoritmi

Običajno se za te namene uporablja kup, čeprav programski jeziki ali razvijalski programer sami omogočajo široko paleto možnosti nadzora prenosa. Sodobno programiranje omogoča, da je lahko ime funkcije ne samo parameter: lahko se oblikuje med izvajanjem algoritma. Algoritem se lahko ustvari tudi med izvedbo drugega algoritma.

Pojem rekurzivnih algoritmov, ko se njihova imena in telesa lahko določijo v času problema (izbira želenega algoritma), razširi rekurzivnost ne le, kako narediti nekaj, temveč tudi kdo naj to naredi. Izbira algoritma za njegovo "smiselno" ime je obetavna, vendar povzroča težave.

Rekurzivnost na nizu funkcij

Ni mogoče reči, da je algoritem rekurziven, ko se imenuje in samo. Programiranje ni dogma, vendar pojem rekurzivnosti ni izključna zahteva, da se pokličete iz telesa svojega lastnega algoritma.

Praktične aplikacije ne zagotavljajo vedno čiste rešitve. Pogosto je treba izvirne podatke pripraviti in rezultate rekurzivnega klica je treba analizirati v kontekstu celotne naloge (celotnega algoritma) kot celote.

Pravzaprav, ne le pred klicem rekurzivne funkcije, temveč tudi po njegovem zaključku, se lahko pozove ali zahteva še en program. Če s klicem ni posebnih težav: rekurzivna funkcija A () pokliče funkcijo B (), ki naredi nekaj in pokliče A (), potem je problem z vrnitvijo krmilnika. Po izpolnitvi rekurzivnega klica mora funkcija A () dobiti kontrolo, da se znova pozove B (), ki jo bo ponovno poklicala. Vrnitev kontrole, kot sledi, da se vrne nazaj v B () - napačna odločitev.

Programator ni omejen pri izbiri parametrov in je lahko opremljen s svojimi funkcijskimi imeni. Z drugimi besedami, idealna rešitev je prenesti ime B () v A () in naj A () naredi klic na B (). V tem primeru ne bo nobenih težav z vrnitvijo nadzora, implementacija rekurzivnega algoritma pa bo bolj pregledna.

Razumevanje in stopnja rekurzije

Problem razvoja rekurzivnih algoritmov je, da morate imeti idejo o dinamiki procesa. Pri uporabi rekurzije v objektnih metodah, še posebej na ravni abstraktnega prednika, se pojavlja problem razumevanja lastnega algoritma v kontekstu njegovega časa izvajanja.

rešitev rekurzivnih algoritmov

Trenutno ni nobenih omejitev na ravni gnezdenja funkcij in zmogljivosti v mehanizmov sklad klicev, vendar pa je problem razumevanja v kakšnem trenutku raven podatkov, ali kakšno mesto v splošni algoritem, da bi klic rekurzivnega funkcije in o tem, koliko sama klicev je.

Obstoječa orodja za odpravljanje napak so pogosto nemočna, da programerju sporočijo pravo rešitev.

Ciklusi in rekurzije

Predpostavlja se, da je ciklična izvedba enaka rekurziji. V nekaterih primerih se v sintaksi pogojnih in cikličnih konstruktov lahko izvaja rekurzivni algoritem.

Vendar, če je jasno, da je treba posebno funkcijo izvaja s pomočjo rekurzivni algoritem, je treba opustiti vsakršno zunanjo možnost uporabe zanko ali pogojne izjave.

izvajanje rekurzivnih algoritmov

Bistvo je, da bo rekurzivna rešitev v obliki funkcije, ki jo uporablja, popoln, funkcionalno popoln algoritem. Ta algoritem zahteva programer trud pri ustvarjanju, razumevanje dinamike algoritma, vendar pa se bo končna odločitev, ki ne potrebuje zunanjega nadzora.

Vsaka kombinacija zunanjih pogojnih in cikličnih operaterjev ne omogoča, da predstavljamo rekurzivni algoritem v obliki popolne popolne funkcije.

Soglasje o rekurziji in OOP

Skoraj v vseh variantah razvoja rekurzivnega algoritma se pojavi načrt za razvoj dveh algoritmov. Prvi algoritem oblikuje seznam prihodnjih objektov (primerov), drugi algoritem pa je pravilna rekurzivna funkcija.

Najboljša rešitev bi bila, da poskrbi v enem rekurzije lastnosti (metoda) dejansko obsegajo rekurzivni algoritem, in vse priprave, da bi konstruktor.

Rekurzivni algoritem bo prava rešitev le, če deluje sam, brez zunanjega nadzora in nadzora. Zunanji algoritem lahko daje samo signal za delo. Rezultat tega dela je pričakovana rešitev brez zunanje podpore.

Rekurzija mora biti vedno popolna neodvisna odločitev.

Intuitivno razumevanje in funkcionalna popolnost

Ko je objektno usmerjeno programiranje postalo de facto standard, je postalo očitno: za učinkovito kodiranje bi bilo treba spremeniti lastno razmišljanje. Programator se mora iz sinteze in semantike jezika premakniti v dinamiko semantike med izvajanjem algoritma.

Značilnost rekurzije: lahko se uporablja v vsem:

  • razčlenjevanje spletnih strani -
  • iskanje operacij-
  • razčleniti informacije o besedilu -
  • branje ali izdelava MS Word-
  • vzorčenje ali analiziranje oznak ...

Značilnost OOP: to je mogoče opisati rekurziven algoritem na ravni abstraktne prednika, vendar v njej vključujejo edinstven pritožbo potomcev, od katerih vsaka ima svoje podatke in lastnosti palet.

koncept rekurzivnih algoritmov

Rekurzija je idealna, saj zahteva funkcionalno popolnost njegovega algoritma. OOP izboljšuje kakovost rekurzivnega algoritma, ki omogoča dostop do vseh edinstvenih potomcev.

Zdieľať na sociálnych sieťach:

Príbuzný