>> ZAMYLA: ordena ulertzeko In errekurtsibitate, hau behar duzu
lehen ulertzen errekurtsibitate.
Programaren diseinu bitartekoak in errekurtsibitate beharrik auto-erreferentziazko duzula
definizioak.
Recursive datuen egitura, adibidez, Datu egiturak direla
beraiek artean, in euren definizioak.
Baina gaur egun, ari gara bideratzen joan funtzio errekurtsiboa da.
>> Gogoratzen funtzio hori hartu Sarrerek, argumentuak, eta balio gisa itzultzeko bere
ordezkatzen duen irteera diagrama hau hemen.
Egingo koadroan pentsatzen dugu gorputzean jo funtzioa, multzoa duten
interpretatzen duen agindu sarrera eta irteera bat emateko.
Gorputzaren barruan batean hurbildu nahi gaitu funtzioaren deiak agerian izan behar
beste funtzio baita.
Hartu funtzio sinple hau, lelo, duen kate bakar bat hartzen du sarrera gisa eta
grabatuak zenbat letrak kate hori dauka.
Funtzioa strlen, katea luzera, deritzo, zeinaren irteera da
printf deia beharrezkoak.
>> Orain, zer funtzio errekurtsiboa bat egiten du berezia da berez deitzen dela.
Recursive honetan adieraz ditzakegu laranja gezi honen bidez deitu
berak itzuli begizta.
Baina bera berriro exekutatzea bakarrik izango dei errekurtsiboa beste egiteko, eta
beste bat eta beste bat.
Baina funtzio errekurtsiboa ezin daiteke infinitua.
Nolabait amaituko dute, edo zure programa betiko ihes egingo.
>> Beraz, hausteko modu bat aurkitu behar dugu ditu dei errekurtsiboak daudelarik.
Hau deitzen dugun base kasuan.
Oinarrizko kasua berriro baldin eta, funtzioa egin gabe itzultzen
dei errekurtsiboa beste.
Hartu funtzio hori, hi, void funtzioa int n hartzen du sarrera gisa.
Base kasuan lehen dator.
N zero baino txikiagoa, inprimatu bye eta bada itzultzeko Gainerako kasuetan baterako,
funtzioa hi inprimatu egingo eta exekutatu dei errekurtsiboa.
Funtzioa hi-dei batekin decremented sarrera balio bat.
>> Orain, inprimatu dugu hi, nahiz eta, funtzioa ez da itxiko dugun arte
itzultzeko bere itzulera mota, Kasu void honetan.
Beraz, behin n base kasuan baino beste baterako, funtzioa hi honetan itzuliko da hi
n ken 1.
Geroztik funtzio hori hutsa da, nahiz eta, dugu ez esplizituki bueltan idatzi hemen.
Besterik funtzioa exekutatu dugu.
Beraz hi deituz (3) izango hi inprimatu eta exekutatu hi (2) hi exekutatzen (1) bat
horrek hi exekutatzen (0), non base kasuan baldintza betetzen da.
Beraz, hi (0) bistaratzen bye eta itzultzen.
>> Ados.
Beraz, gaur egun oinarriak ulertzen dugula funtzio errekurtsiboak, behar dutela
base kasuan gutxienez bat baita bat dei errekurtsiboa, dezagun aurrera bati
Esanguratsua adibidez.
Ez da besterik gabe itzuliko dela bat gal ez Gaia zer.
>> Dezagun faktoriala begirada bat Erabilitako operazio gehien batean
probabilitate kalkuluak.
N faktorial behin produktua da baino zenbaki oso positibo gutxiago
eta n berdinak.
Beraz, faktore bost 5 aldiz 4 aldiz da 3 aldiz 2 aldiz 1 120 emateko.
Lau faktore 4 aldiz 3 aldiz da 2 aldiz 1 24 emateko.
Eta arau bera aplikatzen edozein zenbaki oso izateko.
>> Beraz, nola recursive idazten dugu agian faktoriala kalkulatzen duen funtzioa
Zenbaki baten?
Beno, identifikatu behar dugu bai base kasuan eta dei errekurtsiboa.
Dei errekurtsiboa bera izango da Kasu guztietan oinarri izan ezik
kasuan, horrek esan nahi izango dugula behar eredu bat emango digu aurkitu gure
nahi den emaitza.
>> Adibide honetan, ikus 5 nola faktore biderkatzailea 4 3 by 2 eta 1 dakar
Eta biderketa oso bera aurkitu da hemen,
4 faktore definizioa.
Beraz, ikusten dugu 5 faktore hori da besterik 5 aldiz 4 faktore.
Orain aplikatu du patroi hau 4 baita faktore?
Bai.
4 faktore hori du ikusiko dugu biderketa 3 aldiz 2 aldiz 1, the
definizioa bera 3 faktore gisa.
Beraz, 4 faktore 4 aldiz 3 berdina da faktorial, eta abar eta abar gure
eredua 1 faktorial, arte makilak eta horrek definizioz 1 berdina da.
>> Ez dago beste positiboak Osoko zenbaki utzi.
Beraz, eredua behar dugu Gure dei errekurtsiboa.
n faktorial n aldiz berdina da n faktoriala ken 1.
Eta gure kasuan?
Hori besterik ez izan gure definizioa 1 faktore.
>> Beraz, orain mugitu idatziz ahal izango dugu funtzioaren kodea.
Base kasuan, ikusiko dugu Baldintza n berdin berdin 1, non
itzuliko dugu 1.
Orduan dei errekurtsiboa gainean mugituz, n aldiz itzuli ikusiko dugu
n faktorial ken 1.
>> Orain dezagun probatzeko gure hau.
Dezagun saiatu faktorial 4 utzi.
Gure funtzioa per berdina da 4 aldiz faktorial (3).
Faktorial (3) da berdina 3 aldiz faktorial (2).
Faktorial (2) da 2 aldiz berdina faktorial (1), 1 ematen du.
Faktorial (2) orain 2 aldiz 1, 2 itzultzen.
Faktorial (3), gaur egun itzuli ahal 3 aldiz 2, 6.
Eta azkenik, faktore (4) 4 aldiz 6, 24 itzultzen du.
>> Duzu arazorik topatzea bazabiltza dei errekurtsiboa batera, asmoa duten
funtzioa dagoeneko lan egiten du.
Zer esan nahi dut, hau da, behar duzu duten dei errekurtsiboa fidatzen itzultzeko
eskuineko balioak.
Esate baterako, badakit bada Faktoriala (5) 5 aldiz berdinen
Faktoriala (4), konfiantza noa Faktoriala (4) emango dit 24.
Pentsatu aldagai gisa, zuk rentzat, dagoeneko definitu balitz bezala
Faktoriala (4).
Beraz edozein faktore egiteko (n), da n produktua eta
aurreko faktore.
Eta aurreko faktore hau deituz lortzen da
n faktorial ken 1.
>> Orain, ikusten duzu ezartzeko ahal izango bada bat recursive yourself funtzionatu.
Kargatu zure terminal edo run.cs50.net, eta funtzioaren batura bat idatzi
duen osoko zenbaki n bat hartu eta itzultzen du partiduko positibo guztien batura
n 1etik osokoak.
Nik idatzi dituzten zenbait batuketa balioak lagundu nahi baduzu, gure.
Lehen, irudikatu du base kasuan baldintza.
Gero, batura begiratu (5).
Daiteke zuk adierazteko termino batuketa beste baten?
Orain, zer batuketa buruz (4)?
Nola daiteke batuketa adierazteko duzu (4) batuketa beste aldetik?
>> Behin batuketa duzu (5) eta batura (4) beste zenbatekoak adierazten da, ikus
duzu bat identifikatu ahal bada batura (n) eredua.
Hala ez bada, saiatu bat beste zenbaki batzuk eta haien batuketa adierazteko
beste zenbakiak dagokionez.
Ereduak identifikatzen diskretuak arabera zenbakiak, Oraindik zure bidean
Edozein n eredua identifikatuz.
>> Errekurtsio tresna benetan boteretsua da, beraz, noski, ez da mugatzen
funtzio matematiko.
Errekurtsio oso modu eraginkorrean erabili ahal izango da denean adibidez zuhaitzak aurre.
Begiratu zuhaitzak labur bat sakon berrikuspena gehiago, baina oraingoz
gogoratzen duten bitar bilaketa zuhaitzak, in bereziki, osatuak daude, nodo, bakoitzaren
balio du, eta bi nodo erakusleak.
Normalean, hau da, ordezkatzen duen nodo nagusi line seinalatuz bat izatea
ezkerreko ume nodo eta bat Umearen eskuineko nodo.
Bilaketa bitarra baten egitura Zuhaitz erabaki bera ondo
bilaketa errekurtsiboaren batera.
Dei errekurtsiboa bai igarotzen ezker edo eskuineko nodoa, baina gehiago
Zuhaitz labur hori.
>> Esan eragiketa bat egiteko nahi dituzun Zuhaitz bitar batean nodo bakoitza.
Nola liteke hori buruz joan beharko duzu?
Beno, errekurtsiboa idatzi izan duzu operazioa burutzen duten funtzioa
guraso nodo on eta errekurtsiboa bat egiten du funtzioa bera deitu,
ezkerretik igaroz eta eskuineko ume nodoak.
Adibidez, funtzio hau, lelo, duen nodo jakin batean balioa eta aldatzen
bere 1 haur guztiek.
Base bat nulua node arrazoiak kasuan , itzultzeko funtzioa adieraziz
ez daudela edozein nodo duten azpi-zuhaitz utzi.
>> Dezagun ibiltzeko.
Lehenengo gurasoa 13 da.
Balioa aldatuko dugu 1, eta gero deitu gure ezker aldean funtzioa baita
eskuinetik bezala.
Funtzioa, foo, da ezker aldean deitzen azpi-zuhaitza lehen, beraz, ezker nodo
be 1 eta foo reassigned egingo borondatea egon nodo duten haur batek deitu,
lehen ezkerreko eta ondoren, eskuinera, eta abar eta abar.
Eta kontatu adarrak ez dute haurrak edozein gehiago, prozesu bera
egingo eskuineko haurrentzat jarraitu zuhaitz osoaren nodoen arte
1 reassigned.
>> Ikusten duzun bezala, ez dira mugatzen dei bakar bat errekurtsiboa.
Bezala asko lana egin egingo gisa.
Zuhaitz bat izan zuen zer baduzu non bakoitzak nodo hiru seme-alaba izan,
Ezkerreko, erdiko eta eskuineko?
Nola litzateke foo editatu duzu?
Beno, erraza da.
Just dei errekurtsiboa bat gehitzeko eta erdiko nodo erakuslea pasatzen.
>> Errekurtsio da oso indartsua eta ez aipatu dotorea, baina bat izan daiteke
hasiera batean kontzeptu zaila da, beraz, gaixoari eta zure denbora hartu.
Base kasuan hasteko.
Ohi da errazena identifikatu da, eta, ondoren, lan egin dezakezu
atzeraka bertatik.
Badakizu iristeko behar duzu zure base kasuan, beraz, agian duela
aholku batzuk emango dizu.
Saiatu kasu zehatz bat adierazteko hasi Beste kasu dagokionez, edo azpi-multzo.
>> Labur hau behaketa Eskerrik asko.
Oso gutxienez, orain, ahal duzun honen antzeko txisteak ulertzen.
Nire izena Zamyla da, eta hau da cs50.
>> Hartu funtzio hori, hi, bat eramango void funtzioa
int, n, sarrera bezala.
Base kasuan lehen dator.
N 0 baino gutxiago, inprimatu bada "Bye" eta itzulera.