DOUG LLOYD: Má tá tú ag feiceáil an físeán ar recursion,
D'fhéadfadh an próiseas iomlán acu chuma le beagán draíochta.
Conas a oibríonn sé?
Cén chaoi a fhios na feidhmeanna go bhfuil siad Ní mór fanacht agus fanacht as luach eile
a thabhairt ar ais ó feidhm difriúil glaoch chun a fháil ar an toradh ba mhaith linn?
>> Bhuel, is é an chúis oibríonn sé seo mar gheall ar de rud éigin ar a dtugtar an chairn glaoch.
Nuair a ghlaonn tú feidhm, an Leagann an córas ar leataobh spás i gcuimhne
don fheidhm a dhéanamh ar a chuid oibre.
Agus muid ag glaoch ar na smután de chuimhne go á chur ar leataobh do gach feidhm
glaoch fráma cruaiche nó fráma feidhm.
Agus mar a d'fhéadfadh a bheith ag súil, na frámaí Stack
beo ar an chuid chairn de chuimhne.
>> Fráma cruaiche feidhm níos mó ná aon Is féidir bheith ann i gcuimhne ag am ar leith.
Má iarrann mó bogadh feidhm, agus glaonna bogadh treo,
tá na trí feidhmeanna frámaí oscailte.
Ach ní léir bhfuil siad frámaí gníomhach.
Tá na frámaí eagraithe i Stack.
Agus an fráma ó na ar a dtugtar an chuid is mó le déanaí
Is é feidhm i gcónaí ar bharr an chairn.
Agus is é sin i gcónaí ar an fráma gníomhach.
Níl ach i ndáiríre riamh amháin fheidhm sin gníomhach ag an am.
Tá sé an ceann ar bharr an chairn.
>> Nuair a iarrann feidhm eile fheidhm, saghas cófraí ​​sé sos.
Tá sé saghas ar a shealbhú, ag fanacht.
Agus is é fráma cruaiche eile bhrú isteach ar an chairn ar a bharr.
Agus éiríonn go bhfuil an fráma gníomhach.
Agus an fráma láithreach thíos mór é a fanacht
dtí go bhfuil sé arís an fráma gníomhach sular féidir é a atosú a chuid oibre.
Nuair a bhíonn feidhm iomlán agus é a dhéanamh,
tá a fráma popped as an chairn.
Sin an téarmaíocht.
Agus an fráma láithreach faoi ​​bhun sé, mar a dúirt mé díreach tar éis,
thiocfaidh chun bheith an fráma gníomhach nua.
>> Agus má iarrann sé an fheidhm eile, tá sé ag dul chun sos arís.
Beidh fráma cruaiche go feidhm nua ar a bhrú ar an barr an chairn.
Beidh sé a dhéanamh a chuid oibre.
D'fhéadfadh sé pop ais as.
Agus an fheidhm eile thíos is féidir é a atosú arís.
>> Mar sin, a ligean ar dul tríd an arís, ag lorg ag an smaoineamh na feidhme factorial
go shainmhínítear muid sa recursion físeáin a fheiceáil
go cruinn conas an draíocht taobh thiar de seo Tá próiseas Athchúrsach siúl.
Mar sin, is é seo ár comhad iomlán, ceart?
Shainmhínítear muid beirt functions-- is mó agus go deimhin.
Agus mar a d'fhéadfadh muid ag súil, Tá aon chlár C ag dul
chun tús a chur ag an chéad líne is mó.
>> Mar sin, táimid a chruthú fráma cruaiche nua do phríomh.
Agus tá sé ag dul chun tús a reáchtáil.
Glaonna is mó printf.
Agus is é printf ag dul go dtí phriontáil amach factorial de 5.
Bhuel, ní chuireann sé a fhios cén factorial de 5,
agus mar sin tá an nglao cheana ag brath ar glaoch feidhm eile.
Mar sin, is mó ag dul chun sos ceart ann.
Tá mé ag dul a fhágáil ar a arrow ceart ann, dath
sé an dath céanna leis an Stack fráma ar an gceart,
a chur in iúl go bhfuil príomh-dul a reo anseo cé go bhfuil factorial de 5 dtugtar.
>> Mar sin, factorial de 5 dtugtar.
Agus tá sé ag dul chun tús a chur ag an an- ag tosú ar an bhfeidhm factorial.
Iarrann sé ar an gceist Táim comhionann I a ghabhann le 1?
Is 5 cothrom le 1?
Bhuel, uimh.
Mar sin, tá sé ag dul chun dul síos go dtí an chuid eile, ar ais n amanna
factorial de n lúide 1.
Bhuel, ceart go leor.
>> Mar sin anois, tá factorial de 5 ag brath ar glao-dhualgas eile
a factorial, a rith i 4 mar an paraiméadar.
Agus mar sin an factorial de 5 fhráma, go fráma dearg,
ag dul a reo ceart ann ag an líne a bhfuil mé in iúl
agus fanacht as factorial de 4 a chríochnú cad is gá é sin a dhéanamh go ansin é
Is féidir a bheith ar an fráma gníomhach arís.
>> Mar sin, factorial de 4 thosaíonn ag an tús factorial.
Is 4 cothrom le 1?
Níl, mar sin tá sé ag dul a dhéanamh ar an rud céanna.
Tá sé ag dul chun dul síos an brainse eile.
Tá sé seo ag dul a fháil chun an líne de chód.
OK, tá mé ag dul a thabhairt ar ais ceithre huaire.
Oh, factorial de 3-- factorial sin de 4 brath ar factorial de 3 críochnú.
>> Agus mar sin ní mór é factorial de 3 a ghlaoch.
Agus sin ag dul a dul tríd an bpróiseas céanna arís.
Tosaíonn sé trí, faigheann anseo.
Factorial de 3 Braitheann ar factorial de 1.
Mar sin, factorial de 2 thosaíonn faigheann, anseo.
Braitheann sé ar factorial de 1.
Factorial de 1 thosaíonn.
>> OK.
Mar sin anois, tá muid ag dul áit éigin suimiúil, ceart?
Mar sin anois, tá 1 cothrom le 1.
Agus mar sin táimid ag filleadh 1.
Ag an bpointe seo, tá muid ag filleadh.
Tá an fheidhm a dhéanamh.
Tá sé is-- iompar níl rud ar bith eile chun é sin a dhéanamh,
agus mar sin an fráma cruaiche le haghaidh factorial de 1 Vox amach.
Tá sé seo críochnaithe.
D'fhill sé 1.
Agus anois, factorial de 2, a ba é an fráma díreach faoi bhun sé
sa Stack thiocfaidh chun bheith, an fráma gníomhach.
>> Agus is féidir é a phiocadh suas go díreach nuair a d'fhág sé as.
Baineann sé le bheith ag fanacht le factorial de 1 a chríochnú a chuid oibre.
Tá sé tar éis críochnaithe anois.
Agus mar sin anseo tá muid.
>> Factorial de 1 ar ais luach de 1.
Mar sin, factorial de 2 féidir rá ar ais 1 2 uair.
Is é a obair atá déanta anois.
Tá sé seo ar ais 2 go factorial de 3, a bhí ina ag fanacht air.
Factorial de 3 atá anois ar an fráma barr, an fráma gníomhach sa chairn.
Agus mar sin deir sé, OK, go maith, tá mé ag dul a thabhairt ar ais 3 huaire 2, a bhfuil 6.
Agus tá mé ag dul a thabhairt go Is mór ar ais go dtí factorial
de 4, bhfuil curtha ag fanacht liom.
Tá mé críochnaithe.
Factorial de 3 Vox as an chairn, agus factorial de 4 anois an fráma gníomhach.
>> 4, a deir, OK, tá mé ag dul a thabhairt ar ais 4 huaire an factorial de 3, a bhí sé.
Go raibh an luach a factorial de 3 ais.
Agus is é sin 4 huaire 6 24.
Agus tá mé ag dul chun pas a go ais go dtí factorial
de 5, bhfuil curtha ag fanacht liom.
Factorial de 5 anois an fráma gníomhach.
Tá sé ag dul a thabhairt ar ais 5 uaire factorial de 4-- 5 uaire 24, nó 120--
agus a thabhairt go luach ar ais go to main, a bhfuil
ag fanacht an-foighneach le haghaidh fada ag bun an chairn.
>> Tá sé nuair a thosaigh sé.
Rinne sé an nglao seo.
Roinnt frámaí ghlac ag an mbarr.
Tá sé anois ar ais ar bharr an chairn.
Tá sé an fráma gníomhach.
Mar sin, is mó a fuair an luach 120 ar ais ó factorial de 5.
Baineann sé le bheith ag fanacht le phriontáil amach go luach.
Agus ansin a dhéanfar é.
Níl aon línte níos mó de cód i is mó.
Mar sin Vox mó ar fráma amach an chairn, agus táimid ag déanamh.
>> Agus sin conas a oibríonn athchúrsáil.
Sin conas a oibríonn frámaí chairn.
Glacfar na glaonna fheidhm a tharla roimhe
bhfuil ach ar sos, ag fanacht do na glaonna dhiaidh
a chríochnú ionas gur féidir leo a bheith ar an gníomhach fráma agus a chríochnú an méid is gá dóibh a dhéanamh.
>> Tá mé Doug Lloyd.
Is é seo an CS50.