1 00:00:00,000 --> 00:00:05,587 2 00:00:05,587 --> 00:00:07,670 ডগ লয়েড: আপনি দেখা করেছি পুনরাবৃত্তির ভিডিও, 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 >> যখন একটি ফাংশন অন্য আহ্বান ফাংশন, এটা ধরণের বিরতি presses. 26 00:01:17,620 --> 00:01:20,590 এটা ধরণের অপেক্ষা, হোল্ড উপর. 27 00:01:20,590 --> 00:01:24,050 আর অন্য সময় স্ট্যাক ফ্রেম push করা হয় এটি উপরে স্ট্যাকের মধ্যে. 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 তার ফ্রেম স্ট্যাকের বন্ধ popped হয়. 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 যে নতুন ফাংশন এর সময় স্ট্যাক ফ্রেম হবে স্ট্যাক উপরের দিকে push করা. 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 সুতরাং এটি নিচে যেতে যাচ্ছে অন্য অংশ, রিটার্ন এন বার 64 00:03:01,110 --> 00:03:02,990 এন বিয়োগ 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 এটা আচরণ আছে হচ্ছে ÑÑ এটা কি জন্য অন্য কিছুই, 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