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.