1 00:00:00,000 --> 00:00:05,587 2 00:00:05,587 --> 00:00:07,670 ડો LLOYD: તમે જોઇ છે રિકર્ઝન પર વિડિઓ, 3 00:00:07,670 --> 00:00:10,170 સમગ્ર પ્રક્રિયા હોય શકે છે થોડો જાદુઈ લાગતું હતું. 4 00:00:10,170 --> 00:00:10,930 તે કેવી રીતે કામ કરે છે? 5 00:00:10,930 --> 00:00:15,010 કાર્યો કેવી રીતે ખબર નથી કે તેઓ રાહ જુઓ અને અન્ય કિંમત માટે રાહ જરૂર 6 00:00:15,010 --> 00:00:19,150 એક અલગ કાર્ય પરત અમે માંગો છો પરિણામ મેળવવા માટે ક્રમમાં કૉલ? 7 00:00:19,150 --> 00:00:22,550 >> વેલ, આ કામ કરે છે કારણ કે છે કોલ સ્ટેક તરીકે ઓળખાય છે કંઈક છે. 8 00:00:22,550 --> 00:00:26,360 તમે એક કાર્ય કૉલ ત્યારે, સિસ્ટમ મેમરી જગ્યા કોરે સુયોજિત કરે છે 9 00:00:26,360 --> 00:00:28,120 તે કાર્ય માટે તેના કામ કરવા માટે. 10 00:00:28,120 --> 00:00:31,720 અને અમે મેમરી આ હિસ્સામાં કૉલ કે દરેક કાર્ય માટે કોરે સુયોજિત કરવામાં આવી રહી છે 11 00:00:31,720 --> 00:00:35,670 એક સ્ટેક ફ્રેમ અથવા કાર્ય ફ્રેમ પર ફોન કરો. 12 00:00:35,670 --> 00:00:38,290 અને તમે અપેક્ષા શકે છે, આ સ્ટેક ફ્રેમ્સ 13 00:00:38,290 --> 00:00:41,000 મેમરી સ્ટેક ભાગ પર રહે છે. 14 00:00:41,000 --> 00:00:43,960 15 00:00:43,960 --> 00:00:47,540 >> એક કરતાં વધુ કાર્ય સ્ટેક ફ્રેમ એક સમયે મેમરી અસ્તિત્વ ધરાવે છે. 16 00:00:47,540 --> 00:00:51,240 મુખ્ય કાર્ય ચાલ કહે છે, તો અને ખસેડો દિશા કહે છે, 17 00:00:51,240 --> 00:00:54,460 બધા ત્રણ વિધેયો ઓપન ફ્રેમ હોય છે. 18 00:00:54,460 --> 00:00:57,350 પરંતુ તેઓ સક્રિય ફ્રેમ નથી બધા હોય છે. 19 00:00:57,350 --> 00:00:59,410 આ ફ્રેમ સ્ટેક ગોઠવાય છે. 20 00:00:59,410 --> 00:01:01,820 અને ના ફ્રેમ તાજેતરમાં કહેવાય 21 00:01:01,820 --> 00:01:04,390 કાર્ય સ્ટેક ટોચ પર હંમેશા છે. 22 00:01:04,390 --> 00:01:07,150 અને તે હંમેશા સક્રિય ફ્રેમ હોય છે. 23 00:01:07,150 --> 00:01:10,420 ખરેખર માત્ર ક્યારેય ત્યાં એક છે એક સમયે સક્રિય છે કે કાર્ય. 24 00:01:10,420 --> 00:01:12,420 તે સ્ટેક ટોચ પર એક છે. 25 00:01:12,420 --> 00:01:17,620 >> જ્યારે કાર્ય અન્ય કહે છે કાર્ય, તે પ્રકારના વિરામ દબાવીને. 26 00:01:17,620 --> 00:01:20,590 તે પ્રકારના રાહ જોઈ, પકડ પર છે. 27 00:01:20,590 --> 00:01:24,050 અને અન્ય સ્ટેક ફ્રેમ દબાણ કરવામાં આવે છે તે ટોચ પર સ્ટેક પર. 28 00:01:24,050 --> 00:01:26,150 અને તે સક્રિય ફ્રેમ બની જાય છે. 29 00:01:26,150 --> 00:01:28,600 અને ફ્રેમ તરત જ તે રાહ જરૂર નીચે 30 00:01:28,600 --> 00:01:33,560 તે ફરીથી સક્રિય ફ્રેમ હોય છે ત્યાં સુધી તે તેના કામ શરૂ કરી શકો છો તે પહેલાં. 31 00:01:33,560 --> 00:01:35,870 જ્યારે એક કાર્ય છે સંપૂર્ણ અને તે પૂર્ણ થાય છે, 32 00:01:35,870 --> 00:01:37,720 તેના ફ્રેમ બોલ સ્ટેક પોપ છે. 33 00:01:37,720 --> 00:01:38,950 તે પરિભાષા છે. 34 00:01:38,950 --> 00:01:41,110 અને ફ્રેમ તરત જ તે નીચે, હું માત્ર જણાવ્યું હતું કે, 35 00:01:41,110 --> 00:01:42,880 નવી સક્રિય ફ્રેમ બની જાય છે. 36 00:01:42,880 --> 00:01:45,960 >> અને તે અન્ય કાર્ય કહે તો, તે ફરીથી વિરામ રહ્યું છે. 37 00:01:45,960 --> 00:01:49,290 તે નવા કાર્ય સ્ટેક ફ્રેમ કરશે સ્ટેક ટોચ પર દબાણ કરી. 38 00:01:49,290 --> 00:01:50,650 તે તેના કામ કરવું પડશે. 39 00:01:50,650 --> 00:01:52,100 તે બંધ પાછા પૉપ શકે છે. 40 00:01:52,100 --> 00:01:55,630 અને અન્ય કાર્ય તેને નીચે ફરી શકે છે. 41 00:01:55,630 --> 00:02:00,080 >> તેથી આપણે જોઈ, ફરીથી આ મારફતે જાઓ કારણદર્શી કાર્ય ના વિચાર પર 42 00:02:00,080 --> 00:02:03,070 અમે વ્યાખ્યાયિત કે રિકર્ઝન વિડિઓ જોવા માટે 43 00:02:03,070 --> 00:02:07,770 બરાબર કેવી રીતે આ પાછળ જાદુ ફરી યાદ આવવું પ્રક્રિયા થઈ રહી છે. 44 00:02:07,770 --> 00:02:09,870 તેથી આ અમારા સમગ્ર ફાઇલ, અધિકાર છે? 45 00:02:09,870 --> 00:02:14,000 અમે બે વ્યાખ્યાયિત મુખ્ય અને હકીકતમાં કાર્યો. 46 00:02:14,000 --> 00:02:15,980 અને અમે આશા રાખી શકે છે, કોઈપણ સી કાર્યક્રમ ચાલે છે, 47 00:02:15,980 --> 00:02:18,470 મુખ્ય પ્રથમ વાક્ય પર શરૂ કરવા માટે. 48 00:02:18,470 --> 00:02:21,660 >> તેથી અમે મુખ્ય માટે એક નવી સ્ટેક ફ્રેમ બનાવો. 49 00:02:21,660 --> 00:02:23,320 અને તે ચાલી શરૂ કરવા જઇ રહ્યું છે. 50 00:02:23,320 --> 00:02:25,270 મુખ્ય કોલ્સ printf. 51 00:02:25,270 --> 00:02:29,390 અને printf રહ્યું છે 5 કારણદર્શી છાપશે. 52 00:02:29,390 --> 00:02:31,440 વેલ, તે ખબર નથી 5 શું કારણદર્શી છે 53 00:02:31,440 --> 00:02:35,620 અને તેથી આ કોલ પહેલેથી જ છે બીજા કાર્ય કૉલ પર આધાર રાખીને. 54 00:02:35,620 --> 00:02:37,270 તેથી મુખ્ય અધિકાર ત્યાં વિરામ રહ્યું છે. 55 00:02:37,270 --> 00:02:39,103 હું રજા તેમ છું તેના , જમણી ત્યાં રંગ તીર 56 00:02:39,103 --> 00:02:41,360 તે તરીકે જ રંગ જમણી બાજુ પર ફ્રેમ ગંજી, 57 00:02:41,360 --> 00:02:47,720 મુખ્ય સ્થિર રહ્યું છે તે સૂચવવા માટે 5 કારણદર્શી કહેવામાં આવે છે અહીં છે. 58 00:02:47,720 --> 00:02:49,300 >> તેથી 5 કારણદર્શી કહેવામાં આવે છે. 59 00:02:49,300 --> 00:02:53,160 અને તે જ સમયે શરૂ કરવા જઈ રહ્યું છે કારણદર્શી કાર્ય પ્રારંભ. 60 00:02:53,160 --> 00:02:55,440 તે એક પ્રશ્ન હું 1 થી સમાન છું પૂછે છે? 61 00:02:55,440 --> 00:02:56,810 1 માટે સમાન 5? 62 00:02:56,810 --> 00:02:57,410 ના, તેમજ. 63 00:02:57,410 --> 00:03:01,110 તેથી તે નીચે જવા માટે જવાનું છે બીજું ભાગ રીટર્ન n વખત 64 00:03:01,110 --> 00:03:02,990 n બાદ 1 કારણદર્શી. 65 00:03:02,990 --> 00:03:03,490 ઠીક છે, ઠીક છે. 66 00:03:03,490 --> 00:03:07,070 >> તેથી હવે, 5 કારણદર્શી છે બીજો એક કોલ પર આધાર રાખીને 67 00:03:07,070 --> 00:03:09,740 પસાર, કારણદર્શી માટે પરિમાણ 4 છે. 68 00:03:09,740 --> 00:03:14,210 અને તેથી કારણદર્શી 5 ફ્રેમ, લાલ ફ્રેમ કે, 69 00:03:14,210 --> 00:03:17,160 અધિકાર ત્યાં સ્થિર રહ્યું છે તે લીટી હું સંકેત કર્યું 70 00:03:17,160 --> 00:03:21,914 અને સમાપ્ત કરવા માટે 4 કારણદર્શી માટે રાહ તે પછી તો, તે શું કરવાની જરૂર છે 71 00:03:21,914 --> 00:03:23,330 સક્રિય ફ્રેમ ફરીથી બની શકે છે. 72 00:03:23,330 --> 00:03:26,890 >> તેથી 4 શરૂ થાય છે કારણદર્શી કારણદર્શી શરૂઆત. 73 00:03:26,890 --> 00:03:28,556 1 માટે સમાન 4 છે? 74 00:03:28,556 --> 00:03:30,180 ના, એટલે તે જ વસ્તુ કરવા જઇ રહ્યું છે. 75 00:03:30,180 --> 00:03:31,590 તે બીજું શાખા નીચે જવા માટે ચાલે છે. 76 00:03:31,590 --> 00:03:33,240 તે કોડ કે વાક્ય મેળવવા માટે ચાલી રહ્યું છે. 77 00:03:33,240 --> 00:03:35,710 ઠીક છે, હું ચાર વખત પરત જઇ રહ્યો છું. 78 00:03:35,710 --> 00:03:41,270 ઓહ, 3-- ના કારણદર્શી જેથી કારણદર્શી 4 3 અંતિમ કારણદર્શી પર આધાર રાખે છે. 79 00:03:41,270 --> 00:03:43,055 >> અને તેથી તે 3 કારણદર્શી કૉલ કરવાની જરૂર છે. 80 00:03:43,055 --> 00:03:45,180 અને તે તેમ મારફતે જાઓ છે ફરીથી એ જ પ્રક્રિયા. 81 00:03:45,180 --> 00:03:48,200 તે મારફતે શરૂ થાય છે અહીં નહીં. 82 00:03:48,200 --> 00:03:50,980 3 કારણદર્શી આધાર રાખે છે 1 કારણદર્શી પર. 83 00:03:50,980 --> 00:03:53,750 2 શરૂ થાય છે તેથી કારણદર્શી, અહીં મળે છે. 84 00:03:53,750 --> 00:03:56,310 તે 1 કારણદર્શી પર આધાર રાખે છે. 85 00:03:56,310 --> 00:03:57,430 1 શરૂ થાય છે કારણદર્શી. 86 00:03:57,430 --> 00:03:57,650 >> ઠીક છે. 87 00:03:57,650 --> 00:03:59,775 તેથી હવે, અમે મળી રહ્યાં ક્યાંક રસપ્રદ છે, અધિકાર? 88 00:03:59,775 --> 00:04:02,190 તેથી હવે, 1 માટે 1 સમાન છે. 89 00:04:02,190 --> 00:04:05,130 અને તેથી અમે 1 આવો. 90 00:04:05,130 --> 00:04:06,770 આ બિંદુએ, અમે પરત આવે છે. 91 00:04:06,770 --> 00:04:07,880 આ કાર્ય થાય છે. 92 00:04:07,880 --> 00:04:11,140 તે વર્તન છે is-- તે કરવા માટે બીજું કંઇ, 93 00:04:11,140 --> 00:04:17,006 અને તેથી સ્ટેક ફ્રેમ માટે 1 કારણદર્શી બંધ પોપ્સ. 94 00:04:17,006 --> 00:04:17,589 તે પૂર્ણ છે. 95 00:04:17,589 --> 00:04:19,480 તે 1 ફર્યા. 96 00:04:19,480 --> 00:04:23,370 અને હવે, 2 કારણદર્શી, જે ફ્રેમ તે નીચે તરત જ 97 00:04:23,370 --> 00:04:26,160 સ્ટેક માં, સક્રિય ફ્રેમ બની જાય છે. 98 00:04:26,160 --> 00:04:29,030 >> અને તેને પસંદ કરી શકો છો બરાબર તે બોલ બાકી છે. 99 00:04:29,030 --> 00:04:32,240 તે કારણદર્શી માટે રાહ જોઈ રહ્યું છે 1 તેનું કામ સમાપ્ત કરવા માટે. 100 00:04:32,240 --> 00:04:33,610 તે હવે સમાપ્ત થઈ ગઈ છે. 101 00:04:33,610 --> 00:04:35,510 અને તેથી અહીં અમે હોય છે. 102 00:04:35,510 --> 00:04:38,080 >> 1 ના કારણદર્શી 1 ની કિંમત પરત ફર્યા. 103 00:04:38,080 --> 00:04:42,430 2 કરી શકો છો તેથી કારણદર્શી કહે છે 2 વખત 1 આવો. 104 00:04:42,430 --> 00:04:43,680 તેના કામ હવે કરવામાં આવે છે. 105 00:04:43,680 --> 00:04:49,110 તે કારણદર્શી 2 પરત છે 3, તેને માટે રાહ જોઈ હતી. 106 00:04:49,110 --> 00:04:53,370 3 કારણદર્શી હવે ટોચ ફ્રેમ છે, સ્ટેક માં સક્રિય ફ્રેમ. 107 00:04:53,370 --> 00:04:58,617 અને તેથી તે ઠીક છે, ઠીક છે, હું જાઉં છું, કહે છે 6 છે, જે 3 વખત 2, પાછા. 108 00:04:58,617 --> 00:05:00,700 અને હું કે આપી જાઉં છું કારણદર્શી પાછા કદર 109 00:05:00,700 --> 00:05:03,430 4 મારા માટે રાહ જોઈ રહ્યું છે, જે. 110 00:05:03,430 --> 00:05:04,500 મે કરી લીધુ. 111 00:05:04,500 --> 00:05:09,410 3 કારણદર્શી બોલ સ્ટેક પોપ્સ, અને 4 કારણદર્શી હવે સક્રિય ફ્રેમ હોય છે. 112 00:05:09,410 --> 00:05:13,510 >> 4 ઠીક છે, હું 4 વખત પાછા જઈ રહ્યો છું, કહે છે છ વર્ષના હતા કે જે 3 કારણદર્શી. 113 00:05:13,510 --> 00:05:15,980 તે કિંમત હતું કે 3 કારણદર્શી ફર્યા. 114 00:05:15,980 --> 00:05:19,010 અને તેથી 4 વખત 6 થી 24 છે. 115 00:05:19,010 --> 00:05:20,990 અને હું પાસ જાઉં છું પાછા કારણદર્શી 116 00:05:20,990 --> 00:05:23,160 5 મારા માટે રાહ જોઈ રહ્યું છે, જે. 117 00:05:23,160 --> 00:05:25,270 5 કારણદર્શી હવે સક્રિય ફ્રેમ હોય છે. 118 00:05:25,270 --> 00:05:30,700 તે 5 વખત પરત ચાલી રહ્યું છે 4-- 5 ગુણ્યા 24, અથવા 120-- ના કારણદર્શી 119 00:05:30,700 --> 00:05:32,722 અને તે કિંમત આપી પાછા છે, કે જે મુખ્ય 120 00:05:32,722 --> 00:05:35,680 એક ખૂબ જ ધીરજથી રાહ જોઈ કરવામાં આવી સ્ટેક તળિયે લાંબા સમય. 121 00:05:35,680 --> 00:05:36,640 >> તે શરૂ જ્યાં તે છે. 122 00:05:36,640 --> 00:05:37,670 આ કોલ કર્યો હતો. 123 00:05:37,670 --> 00:05:39,400 ઘણી બધી ફ્રેમ ટોચ પર લીધો હતો. 124 00:05:39,400 --> 00:05:41,890 તે હવે પાછા સ્ટેક ટોચ પર છે. 125 00:05:41,890 --> 00:05:43,450 તે સક્રિય ફ્રેમ છે. 126 00:05:43,450 --> 00:05:47,810 તેથી મુખ્ય કિંમત મળી 120 પાછા 5 કારણદર્શી છે. 127 00:05:47,810 --> 00:05:50,750 તે માટે રાહ જોઈ રહ્યું છે તે કિંમત છાપશે. 128 00:05:50,750 --> 00:05:51,657 અને પછી તે થાય છે. 129 00:05:51,657 --> 00:05:53,240 મુખ્ય કોડ વધુ રેખાઓ કોઈ છે. 130 00:05:53,240 --> 00:05:56,800 તેથી મુખ્ય ફ્રેમ બંધ પૉપ સ્ટેક, અને અમે પૂર્ણ કરી રહ્યાં છો. 131 00:05:56,800 --> 00:05:58,992 >> રિકર્ઝન કેવી રીતે કામ કરે છે અને તે છે. 132 00:05:58,992 --> 00:06:00,200 કે સ્ટેક ફ્રેમ કેવી રીતે કામ કરે છે. 133 00:06:00,200 --> 00:06:03,120 તે કાર્ય કોલ્સ તે પહેલાં થયું 134 00:06:03,120 --> 00:06:06,620 ફક્ત વિરામ પર છે રાહ જોઈ અનુગામી કોલ્સ માટે 135 00:06:06,620 --> 00:06:12,050 જેથી તેઓ સક્રિય બની શકે છે સમાપ્ત કરવા માટે ફ્રેમ અને તેઓ શું કરવાની જરૂર સમાપ્ત કરો. 136 00:06:12,050 --> 00:06:13,060 >> હું ડો લોયડ છું. 137 00:06:13,060 --> 00:06:14,880 આ CS50 છે. 138 00:06:14,880 --> 00:06:16,580