DOUG LLOYD: Os ydych chi wedi gweld y fideo ar recursion,
Efallai y broses gyfan yn cael ymddangos ychydig yn hudol.
Sut mae'n gweithio?
Sut mae'r swyddogaethau yn gwybod eu bod yn Mae angen i chi aros ac aros am werth arall
i ddychwelyd o swyddogaeth wahanol galw i mewn er mwyn cael y canlyniad yr ydym am ei gael?
>> Wel, y rheswm mae hyn yn gweithio yw oherwydd o rywbeth a elwir yn pentwr alwad.
Pan fyddwch yn galw swyddogaeth, mae'r system yn neilltuo lle yn y cof
ar gyfer y swyddogaeth honno i wneud ei waith.
Ac rydym yn galw darnau hyn o gof sy'n yn cael eu neilltuo ar gyfer pob swyddogaeth
ffoniwch ffrâm pentwr neu ffrâm swyddogaeth.
Ac fel y gallech ddisgwyl, fframiau stac hyn
byw ar y rhan pentwr o gof.
>> Ffrâm pentwr Mae mwy nag un swyddogaeth Gall bodoli mewn cof ar adeg benodol.
Os prif galw symudiad swyddogaeth, a symud galwadau cyfeiriad,
pob tair swyddogaeth yn cael fframiau agored.
Ond nid yw pob oes ganddynt fframiau gweithredol.
Mae'r fframiau yn cael eu trefnu mewn pentwr.
Ac y ffrâm oddi wrth y Gelwir fwyaf diweddar
swyddogaeth yw bob amser ar ben y pentwr.
A dyna y ffrâm weithredol bob amser.
Dim ond 'n sylweddol erioed un swyddogaeth sy'n weithredol ar y tro.
Mae'n y naill ar ben y pentwr.
>> Pan fydd swyddogaeth yn galw un arall swyddogaeth, mae'n fath o gweisg oedi.
Mae'n fath o wedi'i ohirio, yn aros.
A ffrâm pentwr arall yn cael ei wthio ar y pentwr ar ei ben.
A bod yn dod yn y ffrâm weithredol.
Ac yn y ffrâm ar unwaith isod mae angen i chi aros
nes ei fod yn unwaith eto y ffrâm weithredol cyn y gall ailddechrau ei waith.
Pan fydd swyddogaeth yw yn gyflawn ac mae'n ei wneud,
ei ffrâm yn cael ei popped oddi ar y pentwr.
Dyna y derminoleg.
Ac yn y ffrâm ar unwaith islaw iddo, fel yr wyf newydd ei ddweud,
yn dod yn ffrâm gweithredol newydd.
>> Ac os bydd yn galw swyddogaeth arall, mae'n mynd i oedi eto.
Ffrâm pentwr swyddogaeth honno newydd fydd gael ei wthio ar ben y pentwr.
Bydd yn gwneud ei waith.
Gallai fod pop yn ôl i ffwrdd.
A'r swyddogaeth arall isod y gall ailddechrau eto.
>> Felly gadewch i ni fynd drwy hyn eto, gan edrych ar y syniad o swyddogaeth ffactoraidd
ein bod yn diffinio yn y recursion fideo i weld
yn union sut mae'r hud tu ôl i hyn proses ailadroddus yn digwydd.
Felly mae hyn yn ein ffeil gyfan, dde?
Rydym yn diffinio dau functions-- brif a ffaith.
Ac fel y gallem ddisgwyl, unrhyw raglen C yn mynd
i ddechrau ar y llinell gyntaf o brif.
>> Felly, rydym yn creu ffrâm pentwr newydd ar gyfer prif.
Ac mae'n mynd i ddechrau rhedeg.
Prif galwadau printf.
A printf yn mynd i argraffu ffactoraidd o 5.
Wel, nid yw'n gwybod pa ffactoraidd o 5 yw,
ac felly alwad hon eisoes gan ddibynnu ar alwad swyddogaeth arall.
Felly prif yn mynd i oedi iawn yno.
Im 'gonna yn gadael ei arrow iawn yno, lliw
mae'n yr un lliw â'r pentwr ffrâm ar y dde,
i nodi bod prif yn mynd i rewi yma tra gelwir ffactoraidd o 5.
>> Felly ffactoraidd o 5 yn cael ei alw.
Ac mae'n mynd i ddechrau ar yr union gan ddechrau o'r swyddogaeth ffactoraidd.
Mae'n yn gofyn y cwestiwn ydw i'n cyfartal i 1?
A yw 5 hafal i 1?
Wel, dim.
Felly, mae'n mynd i fynd i lawr i y arall rhannol, yn dychwelyd n amserau
ffactorial n minws 1.
Wel, OK.
>> Felly nawr, ffactor o 5 yw yn dibynnu ar alwad arall
i ffactoraidd, gan fynd heibio yn 4 fel y paramedr.
Ac felly y ffactoraidd o 5 ffrâm, y ffrâm coch,
yn mynd i rewi iawn yno ar y llinell rwyf wedi nodi
ac yn aros am ffactor o 4 i orffen yr hyn y mae angen iddo ei wneud fel bod yna mae'n
Gall dod yn y ffrâm weithredol eto.
>> Felly ffactorial o 4 yn dechrau am ddechrau ffactoraidd.
Yw 4 hafal i 1?
Na, felly mae'n mynd i wneud yr un peth.
Mae'n mynd i fynd i lawr y gangen arall.
Mae'n mynd i gyrraedd y llinell o god.
OK, dw i'n mynd i ddychwelyd bedair gwaith.
O, ffactoraidd o 3-- felly ffactoraidd o 4 yn dibynnu ar ffactor o 3 gorffen.
>> Ac felly mae angen i alw ffactoraidd o 3.
Ac mae hynny'n gonna yn mynd trwy yr un broses eto.
Mae'n dechrau trwy, yn cael yma.
Ffactorial o 3 yn dibynnu ar ffactoraidd o 1.
Felly ffactoraidd o 2 yn dechrau, yn cael yma.
Mae'n dibynnu ar ffactor o 1.
Ffactorial o yn dechrau 1.
>> IAWN.
Felly nawr, rydym yn cael rhywle diddorol, dde?
Felly nawr, 1 yn hafal i 1.
Ac felly byddwn yn dychwelyd 1.
Ar y pwynt hwn, rydym yn dychwelyd.
Mae'r swyddogaeth ei wneud.
Mae'n yw-- ymddygiad mae dim byd arall iddo wneud,
ac felly roedd y ffrâm pentwr ar gyfer ffactorial o 1 pops i ffwrdd.
Mae wedi gorffen.
Mae'n Dychwelodd 1.
Ac yn awr, ffactorial o 2, a oedd yn Roedd y ffrâm union islaw iddo
yn y pentwr, yn dod yn y ffrâm weithredol.
>> Ac mae'n gallu codi'r yn union lle mae'n chwith oddi.
Mae wedi bod yn aros am ffactoraidd o 1 i orffen ei waith.
Mae bellach wedi dod i ben.
Ac felly dyma ni.
>> Ffactorial o 1 dychwelodd gwerth o 1.
Felly ffactoraidd o 2 can dyweder yn dychwelyd 2 waith 1.
Mae ei waith yn cael ei wneud yn awr.
Mae'n dychwelodd 2 i ffactoraidd o 3, a oedd yn aros ar ei gyfer.
Ffactorial o 3 yn awr yn y ffrâm uchaf, y ffrâm weithredol yn y pentwr.
Ac felly y mae'n ei ddweud, OK, wel, dw i'n mynd i ddychwelyd 3 gwaith 2, sydd 6.
Ac yr wyf i'n mynd i roi y gwerthfawrogi yn ôl i ffactoraidd
o 4, sydd wedi bod yn aros i mi.
Dwi wedi gorffen.
Ffactorial o 3 pops oddi ar y pentwr, ac ffactorial o 4 yn awr yn y ffrâm weithredol.
>> 4 yn dweud, OK, dw i'n mynd i ddychwelyd 4 gwaith ffactorial 3, a oedd yn chwech.
Dyna oedd o werth y ffactorial o 3 dychwelyd.
Ac felly 4 gwaith 6 yw 24.
Ac yr wyf i'n mynd i basio bod yn ôl i ffactoraidd
o 5, sydd wedi bod yn aros i mi.
Ffactorial o 5 yn awr yn y ffrâm weithredol.
Mae'n mynd i ddychwelyd 5 gwaith ffactoraidd o 4-- 5 gwaith 24, neu 120--
ac yn rhoi y gwerth yn ôl i'r brif, sydd wedi
bod yn aros yn amyneddgar iawn ar gyfer amser hir ar waelod y pentwr.
>> Mae'n lle iddo ddechrau.
Roedd yn gwneud yr alwad hon.
Cymerodd nifer fframiau drosodd ar y brig.
Mae bellach yn ôl ar ben y pentwr.
Mae'n y ffrâm weithredol.
Felly prif got y gwerth 120 yn ôl o ffactoraidd o 5.
Mae wedi bod yn aros i argraffwch y gwerth.
Ac yna mae'n ei wneud.
Dim mae mwy o god llinellau yn y prif.
Felly prif ffrâm yn pops i ffwrdd y pentwr, ac rydym yn ei wneud.
>> A dyna sut y dychweliad yn gweithio.
Dyna sut fframiau stac yn gweithio.
Mae'r rhai galwadau swyddogaeth sydd wedi digwydd yn flaenorol
yn unig ar oedi, aros gyfer y galwadau dilynol
i orffen fel y gallant ddod yn weithgar ffrâm a orffen yr hyn sydd angen iddynt ei wneud.
>> Rwy'n Doug Lloyd.
Mae hyn yn CS50.