[সঙ্গীত বাজাচ্ছি] ডগ লয়েড: সম্ভবত আপনি যে মনে কোড শুধু একটি কর্ম ব্যবহৃত হয়. আপনি এটি লিখতে. এটা এমন কিছু না. যে প্রায় কাছাকাছি এটা. আপনি এটা কম্পাইল. আপনি প্রোগ্রাম চালানো. আপনি যেতে ভাল. কিন্তু এটা বিশ্বাস করি বা না, যদি আপনি একটি দীর্ঘ সময়ের জন্য কোড আপনি আসলে দেখতে আসতে পারে সুন্দর কিছু যে হিসাবে কোড. এটা একটা সমস্যা solves একটি খুব আকর্ষণীয় ভাবে, অথবা সত্যিই ঠিক আছে কিছু এটা দেখে মনে হচ্ছে পথ সম্পর্কে ঝরঝরে. আপনি হাসতে পারে আমার এ, কিন্তু এটা সত্যি. এবং recursion এক উপায় সাজান এই ধারণা পেতে সুন্দর, মার্জিত সুদর্শন কোড. এটা উপায়ে সমস্যা solves যে , ঠাহর করা সহজ, আকর্ষণীয় এবং আশ্চর্যজনক ছোট. পথ, recursion কাজ একটি রিকার্সিভ ফাংশন, হয় কল করে একটি ফাংশন হিসাবে সংজ্ঞায়িত করা হয় নিজেই তার মৃত্যুদন্ড অংশ হিসেবে. যে, একটু অদ্ভুত মনে হতে পারে এবং আমরা একটি সামান্য বিট দেখতে পাবেন এই একটি মুহূর্ত কিভাবে কাজ সম্পর্কে. কিন্তু আবার, এই রিকার্সিভ পদ্ধতি তাই মার্জিত হতে যাচ্ছে তারা চলুন কারণ ছাড়া এই সমস্যা সমাধানের জন্য এই সমস্ত অন্যান্য ফাংশন হচ্ছে অথবা এই দীর্ঘ loops আছে. আপনি এই রিকার্সিভ দেখতে পাবেন পদ্ধতি যাতে স্বল্প দেখুন যাচ্ছি. এবং তারা সত্যিই করতে যাচ্ছি আপনার কোড আরো অনেক সুন্দর চেহারা. আমি আপনাকে একটি উদাহরণ দেব এই নিয়ে দেখতে একটি রিকার্সিভ পদ্ধতি সংজ্ঞায়িত করা যেতে পারে. আপনি এই সঙ্গে পরিচিত হন তাহলে তাই অনেক বছর আগে, গণিত ক্লাস থেকে কিছু আছে বলা হচ্ছে সাধারণত যা গৌণিক ফাংশন, কোন বিস্ময়বোধক বিন্দু, হিসাবে সূচিত যা সমস্ত ধনাত্মক পূর্ণ সংখ্যা ওভার সংজ্ঞায়িত করা হয়. আর ভাবে যে এন গৌণিক গণনা করা হয় আপনি সব গুন করা হয় বেশী নম্বর কম অথবা সমান এন একসঙ্গে করতে সব ইন্টিজার কম বা একসাথে এন সমান. তাই 5 গৌণিক 5 বার হয় 4 বার 3 বার 2 বার 1. আর 4 গৌণিক 4 বার হল 3 বার 2 বার 1, and so on. আপনি ধারণা পেতে. প্রোগ্রামারদের হিসাবে, আমরা না এন, বিস্ময়বোধক বিন্দু ব্যবহার. সুতরাং আমরা factorial সংজ্ঞায়িত করব n এর সত্য হিসাবে ফাংশন. আর আমরা তৈরি করতে গৌণিক ব্যবহার করব একটি সমস্যার একটি সমাধান রিকার্সিভ. আর আমি আপনাকে খুঁজে পেতে পারে মনে এটা অনেক বেশি দৃশ্যত যে পুনরাবৃত্ত চেয়ে মর্মস্পর্শী এই সংস্করণ, যা আমরা একটি মুহূর্ত কটাক্ষপাত করব. তাই এখানে একটি দম্পতি আছে facts-- শ্লেষ intended-- সম্পর্কে factorial-- গৌণিক ফাংশন. আমি আগেই বলেছি, 1 গৌণিক, 1 হয়. 2 এর গৌণিক 2 বার 1. 3 গৌণিক 3 বার 2 তাই বার 1, এবং. আমরা ইতিমধ্যে 4 ও 5 নিয়ে কথা বলত. কিন্তু এই সময়ে খুঁজছি, এই সত্য নয়? 2 এর গৌণিক নয়, ঠিক 2 বার 1 গৌণিক? আমি বলতে চাচ্ছি, 1 গৌণিক 1 হয়. তাই কেন আমরা শুধু বলতে পারবে না, 2 এর গৌণিক 2 বার 1 যেহেতু, এটা সত্যিই শুধু 2 বার 1 এর গৌণিক? এবং তারপর, যে ধারণা ব্যাপ্ত 3 গৌণিক নয় মাত্র 3 বার 2 গৌণিক? এবং 4 গৌণিক 4 বার হল তাই 3, এবং এর গৌণিক? বস্তুত, গৌণিক কোন সংখ্যা শুধু পারেন ধরনের আমরা যদি প্রকাশ করা চিরতরে এই চালায়. আমরা ধরনের বিশ্বজনীন পারেন গৌণিক সমস্যা এটা যেমন এন বার এন বিয়োগ 1 এর গৌণিক. এটা নিয়ে এন বার পণ্য সব সংখ্যার আমাকে কম. এই ধারণা, এই সমস্যা সাধারণীকরণ করেন আমাদের পৌনঃপুনিকভাবে করতে পারবেন গৌণিক ফাংশন নির্ধারণ. আপনি যদি একটি ফাংশন নির্ধারণ করা হলে পৌনঃপুনিকভাবে, আছে এটি একটি অংশ হতে হবে যে দুটি জিনিস. আপনি কিছু একটা বলা আছে প্রয়োজন বেস কেস, যা, যখন আপনি এটা ট্রিগার, রিকার্সিভ বন্ধ করা হবে. অন্যথা, একটি ফাংশন যে আহ্বান নিজেই আপনি imagine-- পারে হিসাবে চিরকালের জন্য যেতে পারে. ফাংশন ফাংশন কল ফাংশন কল ফাংশন ফাংশন কল. আপনি একটি উপায় না থাকে আপনার প্রোগ্রাম এটা বন্ধ করার জন্য কার্যকরভাবে আটকে করা হবে অসীম লুপ এ. এটা শেষ পর্যন্ত বিপর্যস্ত হবে এটি মেমরি ফুরিয়ে করব কারণ. কিন্তু যে পয়েন্ট এর পাশে. আমরা বন্ধ করার জন্য অন্য কিছু উপায় আছে প্রয়োজন আমাদের প্রোগ্রাম বিপর্যয় এছাড়া কিছু বিপর্যের একটি প্রোগ্রাম কারণ সম্ভবত সুন্দর বা মার্জিত না. আর তাই আমরা এই বেস ক্ষেত্রে কল. এটি একটি সহজ সমাধান স্টপ, যা একটি সমস্যা ঘটমান থেকে রিকার্সিভ প্রক্রিয়া. সুতরাং যে এক অংশ একটি রিকার্সিভ ফাংশন. দ্বিতীয় অংশ রিকার্সিভ ক্ষেত্রে হয়. এবং এখান থেকেই, recursion হয় আসলে সঞ্চালিত হবে. এই হল যেখানে ফাংশন নিজেই কল হবে. এটা ঠিক যে নিজেই কল করতে হবে একই ভাবে এটা বলা ছিল. এটা সামান্য প্রকরণ হবেন যে এটি সমস্যা তোলে একটি পুঁচকে বিট ছোট সমাধান বের করার চেষ্টা করুন. কিন্তু এটা সাধারণত হরিণ পাস এর সমাধান বাল্ক সমাধানে লাইন নিচে একটি ভিন্ন কল করতে. এই রূপ কোনটি এখানে বেস কেস মত? যা মত এই সৌন্দর্য এক একটি সমস্যার সহজ সমাধান? আমরা factorials একটি গুচ্ছ আছে, এবং আমরা অগ্রসর হতে পারে তাই on-- 6, 7, 8, 9, 10, এবং যাচ্ছে. কিন্তু একটি মত এই সৌন্দর্য এক ভাল ক্ষেত্রে বেস কেস হতে. এটি একটি খুব সহজ সমাধান. আমরা বিশেষ কিছু করতে হবে না. 1 এর গৌণিক শুধু 1 হয়. আমরা কোনো কাজ করতে হবে না গুণ সব সময়ে. আমরা চলুন তাহলে এটি দেখে মনে হচ্ছে চেষ্টা করুন এবং এই সমস্যা সমাধানের জন্য, এবং আমরা বন্ধ করতে হবে কোথাও recursion, আমরা সম্ভবত বন্ধ করতে চান আমরা 1 থেকে পেতে হলে. আমরা যে আগে বন্ধ করতে চান না. আমরা সংজ্ঞায়িত করছি যদি তাই আমাদের গৌণিক ফাংশন, এখানে একটি কঙ্কাল জন্য আমরা কিভাবে তা করতে পারে. আমরা যারা দুটি জিনিস মধ্যে চলা প্রয়োজন বেস কেস এবং রিকার্সিভ ক্ষেত্রে. বেস কেস কি? এন 1 এর সমান হয়, তাহলে আসতে 1 টি যে একটি সত্যিই সহজ সমস্যা সমাধানের জন্য. 1 এর গৌণিক 1 হয়. এটা না 1 বার কিছুই. এটা শুধু 1 এর. এটি একটি খুব সহজ সত্য. আর তাই আমাদের বেস কেস হতে পারে. আমরা এই মধ্যে 1 পাশ করতে হলে ফাংশন, আমরা শুধু 1 ফিরে আসবেন. রিকার্সিভ কী ক্ষেত্রে সম্ভবত অনুরূপ? প্রত্যেক অন্য সংখ্যা জন্য 1 এছাড়া প্যাটার্ন কি? ওয়েল, আমরা গ্রহণ করছি এন গৌণিক, এটি এন বার গৌণিক বিয়োগ 1. আমরা 3 গৌণিক গ্রহণ করছেন, এটি 3 বিয়োগ 1 এর 3 বার গৌণিক এর বা 2. আর আমরা পারব না তাই যদি অন্যথায়, 1 এ খুঁজছেন রিটার্ন এন বার এন বিয়োগ 1 এর গৌণিক. এটা বেশ সহজবোধ্য. এবং সামান্য থাকার দরূন জন্য ক্লিনার এবং কোড আরো মার্জিত, জানি যে আমরা একক লাইন loops আছে যদি বা একক-লাইন শর্তাধীন শাখা, আমরা সব পরিত্রাণ পেতে পারেন তাদের চারপাশে কোঁকড়া ধনুর্বন্ধনী. তাই আমরা এই এই একত্রীকরণ করতে পারেন. এই ঠিক একই আছে এই হিসাবে কার্যকারিতা. আমি শুধু কোঁকড়া দূরে গ্রহণ করছি শুধুমাত্র একটি লাইন আছে, কারণ, ধনুর্বন্ধনী যারা শর্তাধীন শাখা ভিতরে. সুতরাং এই অভিন্নরুপে আচরণ. এন 1 এর সমান হয়, তাহলে 1 আসতে. অন্যথা এন বার আসতে এন বিয়োগ 1 এর গৌণিক. তাই আমরা ছোট সমস্যা তৈরি করছেন. এন 5 আউট হিসাবে শুরু হয়, তাহলে, আমরা চলুন 4 এর 5 বার গৌণিক আসতে. আর আমরা কথা বলতে হলে এক মিনিটের মধ্যে দেখতে পাবেন আরেকটি ভিডিও কল স্ট্যাক সম্পর্কে যেখানে আমরা যে বিষয়ে কথা আমরা শিখতে করব স্ট্যাক কল ঠিক এই প্রক্রিয়া কাজ কেন সম্পর্কে. কিন্তু 5 যখন গৌণিক বলেছেন 5 বার গৌণিক 4 প্রত্যাবর্তন, এবং 4 আচ্ছা, ঠিক আছে, বলে যাচ্ছে, ফিরে যাও 4 বার 3 গৌণিক. হিসাবে আপনি দেখতে পারেন, আমরা করছি সাজান 1 সমীপবর্তী. আমরা কাছাকাছি পেয়ে থাকেন এবং যে বেস ক্ষেত্রে কাছাকাছি. আর আমরা বেস ক্ষেত্রে আঘাত একবার, পূর্ববর্তী ফাংশন সব তারা করছিলেন উত্তর আছে. 2 এর গুণিতক রিটার্ন বলার অপেক্ষা রাখে না 2 বার 1 গৌণিক. ওয়েল, 1 আয় 1 গৌণিক. গৌণিক জন্য তাই কল 2, 2 বার 1 আসতে পারেন এবং এর গৌণিক যে ফেরত দিতে যে ফলাফলের জন্য অপেক্ষা করছে, যা 3. এবং তারপর তা নিরূপণ করতে পারেন তার ফলে, 3 বার 2, 6 এবং 4 গৌণিক ফিরে এটা দিতে. এবং আবার, আমরা একটি আছে কল স্ট্যাক ভিডিও এই একটু চিত্রিত করা হয় যেখানে আমি এই মুহূর্তে বলার অপেক্ষা রাখে না কি আরো বেশী. কিন্তু এই হল এটা. এই একা সমাধান একটি সংখ্যা গৌণিক হিসাবী. এটা কোড মাত্র চারটি লাইন. একেবারে ঠিক, বেশ শান্ত? এটা সেক্সি ধরনের. তাই সাধারণভাবে, কিন্তু না সবসময় একটি রিকার্সিভ ফাংশন একটি একটি লুপ প্রতিস্থাপন করতে পারেন অ রিকার্সিভ ফাংশন. তাই এখানে, পাশাপাশি, পুনরাবৃত্ত হয় গৌণিক ফাংশনের সংস্করণ. এই হিসাব উভয় ঠিক একই জিনিস. তারা উভয় এন গৌণিক নিরূপণ. Glosbe উপর সংস্করণ এটা করতে, recursion ব্যবহার. ডানদিকে সংস্করণ এটা করতে পুনরাবৃত্তির ব্যবহার. এবং খেয়াল করুন, আমরা ঘোষণা করতে হবে একটি পূর্ণসংখ্যা পণ্য একটি পরিবর্তনশীল. এবং তারপর আমরা লুপ. এতক্ষণ এন হিসাবে আমরা, তার চেয়ে অনেক বেশী 0 এন দ্বারা যে পণ্য গুন রাখতে এবং যতক্ষণ এন decrementing আমরা পণ্য নিরূপণ. তাই এই দুটি ফাংশন, আবার, ঠিক একই জিনিস. কিন্তু তারা তা না না ঠিক একই ভাবে. এখন, এটা করা সম্ভব একাধিক বেস আছে যদি বা একাধিক রিকার্সিভ ক্ষেত্রে, নির্ভর করে কি আপনার ফাংশন কাজ করার চেষ্টা করছে. আপনি অগত্যা শুধু সীমাবদ্ধ নয় একটি একক বেস কেস বা একটি একক রিকার্সিভ কেস. কিছু একটি উদাহরণ একাধিক বেস মামলা হতে পারে আপাততঃ ফিবানচি সংখ্যা ক্রম. আপনি থেকে প্রত্যাহার করা হতে পারে প্রাথমিক স্কুল দিন Fibonacci ক্রম নির্ধারিত হয় যে আপাততঃ মত প্রথম উপাদান 0 হয়. দ্বিতীয় উপাদান 1 হয়. যারা উভয় শুধু সংজ্ঞা দ্বারা হয়. অতঃপর প্রত্যেকেই অন্যান্য উপাদান সংজ্ঞায়িত হয় এন বিয়োগ 1 এন বিয়োগ 2 এর সমষ্টি হিসেবে. তৃতীয় উপাদান তাই 0 প্লাস 1 1 হতে হবে. এবং তারপর চতুর্থ উপাদান দ্বিতীয় উপাদান, 1 হতে হবে, প্লাস তৃতীয় উপাদান, 1. আর যে 2 হতে হবে. এবং তাই এবং তাই. তাই এই ক্ষেত্রে, আমরা দুটি বেস ক্ষেত্রে আছে. এন 1 এর সমান হয়, তাহলে 0 আসতে. এন 2 সমান হলে, 1 ফিরে. অন্যথা, n এর ফিবানচি আসতে বিয়োগ 1 প্লাস এন বিয়োগ 2 ফিবানচি. সুতরাং যে একাধিক বেস ক্ষেত্রে এর. কি একাধিক রিকার্সিভ মামলা সম্পর্কে? ওয়েল, কিছু আছে Collatz অনুমান বলা. আমি বলতে যাচ্ছি না আপনি, যে কি জানেন এটা আসলে আমাদের চূড়ান্ত কারণ এই বিশেষ ভিডিও জন্য সমস্যা. আর এটা তোলে আমাদের ব্যায়াম একসঙ্গে কাজ করতে. সুতরাং এখানে কি Collatz অনুমান হচ্ছে ÑÑ এটা তোলে ধনাত্মক পূর্ণসংখ্যা প্রযোজ্য. আর এটা যে speculates সবসময় সম্ভব ফিরে পেতে 1 থেকে আপনি নিম্নলিখিত ধাপগুলি অনুসরণ করে. এন 1 হয় তাহলে, বন্ধ. এন 1 হয় তাহলে আমরা 1 ফিরে পেয়েছেন. অন্যথা, এই মধ্য দিয়ে যেতে প্রক্রিয়া আবার উপর এন 2 দ্বারা বিভক্ত. আপনি 1 ফিরে পেতে পারেন এবং যদি দেখতে. যদি n হল বিজোড় অন্যথা, মধ্য দিয়ে যেতে আবার 3N প্লাস 1 এই প্রক্রিয়া, বা 3 বার এন প্লাস 1. তাই আমরা এখানে একটি একক বেস কেস আছে. এন 1 এর সমান হয়, তাহলে বন্ধ. আমরা কোন recursion করছেন না. কিন্তু আমরা দুই রিকার্সিভ ক্ষেত্রে আছে. যদি n এমনকি হল, আমরা এক রিকার্সিভ না কেস, এন 2 দ্বারা বিভক্ত কলিং. যদি n হল বিজোড়, আমরা একটি ভিন্ন না 3 বার এন প্লাস 1 রিকার্সিভ ক্ষেত্রে. আর তাই এই ভিডিওটির জন্য লক্ষ্য , একটি দ্বিতীয় নিতে ভিডিও বিরতি, এবং চেষ্টা করুন এবং এই লিখুন রিকার্সিভ ফাংশন Collatz যেখানে আপনি একটি মান এন এ পাস এটি কতগুলি পদক্ষেপ এটা হিসাব আপনি এন থেকে শুরু হলে 1 পেতে লাগে এবং আপনি যারা উপরের ধাপ অনুসরণ করা. এন 1 হয়, তাহলে এটি 0 পদক্ষেপ নেয়. অন্যথা, এটি যাচ্ছে তবে এক ধাপ প্লাস নিতে এটা হয় এন লাগে অনেক পদক্ষেপ 2 দ্বারা বিভক্ত n এমনকি হল, বা 3N প্লাস 1 যদি যদি n হল বিজোড়. এখন, আমি এখানে পর্দায় রেখেছি আপনার জন্য পরীক্ষা জিনিষ কয়েক, আপনার জন্য পরীক্ষার ক্ষেত্রে একটি দম্পতি, দেখতে এইসব বিভিন্ন Collatz সংখ্যা কি, এবং একটি চিত্রণ ধাপের যে তাই আপনি যা করতে পারেন মাধ্যমে সর্বস্বান্ত করা প্রয়োজন সাজান কর্ম এই প্রক্রিয়া দেখতে. এন সমান হলে তাই 1, এন Collatz 0 হয়. আপনাকে যা করতে হবে না কিছু 1 ফিরে পেতে. ইতিমধ্যে সেখানে আছেন. এন 2 হয়, তাহলে এটি লাগে এক ধাপ 1 পেতে. আপনি 2 দিয়ে শুরু. ওয়েল, 2 1 সমান নয়. সুতরাং এটা এক ধাপ হতে যাচ্ছে প্লাস তবে অনেক ধাপ এটা লাগে এন 2 দ্বারা বিভক্ত. 2 দ্বারা বিভক্ত 2 1 হয়. সুতরাং এটা অবশ্য এক ধাপ প্লাস লাগে অনেক পদক্ষেপ এটি 1 জন্য লাগে. 1 শূন্য পদক্ষেপ নেয়. হিসাবে আপনি দেখতে পারেন 3, আছে বেশ কয়েক ধাপ জড়িত. আপনি 3 থেকে যেতে. এবং তারপর আপনি যেতে 10, 5, 16, 8, 4, 2, 1. এটা 1 ফিরে পেতে সাত পদক্ষেপ নেয়. হিসাবে আপনি দেখতে পারেন, সেখানে একটি এখানে কয়েক অন্যান্য পরীক্ষার ক্ষেত্রে আপনার প্রোগ্রাম পরীক্ষা আউট. তাই আবার, ভিডিও বিরতি. আর আমি এখন ফিরে তিড়িং লাফ যাবেন প্রকৃত প্রক্রিয়া এখানে কি, এই অনুমান করে কথা বলে কি. আপনি চিন্তা করতে পারেন, তাহলে দেখুন n এর Collatz নির্ধারণ কিভাবে এটি কতগুলি হিসাব যাতে এটা 1 পেতে লাগে পদক্ষেপ. তাই আশা করছি, আপনি ভিডিও বিরাম দেওয়া এবং আপনি শুধু আমার জন্য অপেক্ষা করা হয় না এখানে আপনি উত্তর দিতে. কিন্তু আপনি যদি ভাল, এখানে উত্তর যাইহোক. তাই এখানে একটি সম্ভাব্য সংজ্ঞা Collatz ফাংশন. যদি n আমাদের বেস ক্ষেত্রেই 1 সমান, আমরা 0 ফিরে. এটা কোনো লাগবে না ধাপ 1 ফিরে পেতে. অন্যথা, আমরা দুটি রিকার্সিভ cases-- আছে এমনকি সংখ্যার জন্য এক এবং অদ্ভুত এক. আমি এমনকি সংখ্যার জন্য পরীক্ষা উপায় এন গেলিক 2 0 সমান কিনা তা পরীক্ষা করা হয়. এই, আবার মূলত প্রশ্ন জিজ্ঞাসা, আপনি কি গেলিক হচ্ছে ÑÑ প্রত্যাহার হলে যদি আমি 2 দ্বারা বিভক্ত এন কোন বাকি আছে? যে একটি জোড় সংখ্যা হবে. তাই এন গেলিক 2 0 সমান হলে পরীক্ষামূলক এই একটি এমনকি সংখ্যা. যদি তাই হয়, আমি 1 ফিরে আসতে চান, এই হ 'ল কারণ এক ধাপ প্লাস Collatz গ্রহণ যাই হোক না কেন নম্বর আমাকে অর্ধেক. অন্যথা, আমি 1 ফিরে আসতে চান প্লাস Collatz 3 বার এন প্লাস 1. অন্য যে ছিল রিকার্সিভ ধাপে যে আমরা নিরূপণ নিতে পারে ধাপের সংখ্যা Collatz-- তা ফিরে পেতে লাগে 1 একটি নম্বর দেওয়া. তাই আশা করছি, এই যেমন আপনি একটি সামান্য বিট দিয়েছেন রিকার্সিভ পদ্ধতি একটি স্বাদ. আশা করছি, আপনি কোড একটি মনে হয় একটু বেশি যদি সুন্দর বাস্তবায়িত একটি মার্জিত, রিকার্সিভ ভাবে. এমনকি না কিন্তু যদি,, recursion একটি তবু সত্যিই শক্তিশালী হাতিয়ার. আর তাই এটি স্পষ্টভাবে কিছু কাছাকাছি আপনার মাথা পেতে, আপনি তৈরি করতে সক্ষম হবেন, কারণ recursion ব্যবহার চমত্কার প্রোগ্রাম যে অন্যথায় লিখতে জটিল হতে পারে আপনি loops এবং পুনরাবৃত্তির ব্যবহার করছেন. আমি ডগ লয়েড আছি. এটি CS50.