পুনরাবৃত্তি ব্যাখ্যা করতে , আমি সাধারণত উভয় চেষ্টা করার জন্য বিভিন্ন ব্যাখ্যা সংমিশ্রণ ব্যবহার:
- ধারণাটি ব্যাখ্যা করুন,
- কেন এটি গুরুত্বপূর্ণ তা ব্যাখ্যা করুন,
- কিভাবে এটি পেতে ব্যাখ্যা করুন।
প্রারম্ভিকদের জন্য, ওল্ফ্রাম | আলফা এটিকে উইকিপিডিয়া থেকে আরও সহজ পদে সংজ্ঞায়িত করে :
প্রতিটি শব্দ একটি নির্দিষ্ট গাণিতিক ক্রিয়াকলাপ পুনরাবৃত্তি দ্বারা উত্পাদিত হয় যেমন একটি অভিব্যক্তি।
গণিতশাস্ত্র
আপনার ছাত্র (বা ব্যক্তি আপনি এখন থেকে খুব ব্যাখ্যা আমি ছাত্র বলবো) অন্তত কিছু গাণিতিক পটভূমি থাকলে, সেগুলি স্পষ্টত ইতিমধ্যে পুনরাবৃত্তির সিরিজ এবং তাদের ধারণা অধ্যয়নরত সম্মুখীন হয়েছি recursivity এবং তাদের পুনরাবৃত্তি সম্পর্ক ।
শুরু করার খুব ভাল উপায় হ'ল একটি সিরিজ দিয়ে তা প্রদর্শন করা এবং তা বলা সহজ যে পুনরাবৃত্তিটি কী তা সম্পর্কে:
- একটি গাণিতিক ফাংশন ...
- ... এটি একটি এন-তৃতীয় উপাদানের সাথে সম্পর্কিত একটি মান গণনা করার জন্য নিজেকে কল করে ...
- ... এবং যা কিছু সীমানা সংজ্ঞায়িত করে।
সাধারণত, আপনি হয় "হু হু, ওয়াতেভ" সেরা পান কারণ তারা এখনও এটি ব্যবহার করে না, বা সম্ভবত খুব গভীর ঘ্রাণ হয়।
কোডিং উদাহরণ
বাকি জন্য, এটি আসলে কি আমি উপস্থাপন করা একটি বিস্তারিত সংস্করণ সংযোজন এর আমার উত্তর জন্য প্রশ্ন সংক্রান্ত পয়েন্টার প্রতি ইঙ্গিত (খারাপ শ্লেষ)।
এই পর্যায়ে, আমার শিক্ষার্থীরা সাধারণত স্ক্রিনে কিছু মুদ্রণ করতে জানে। ধরে নেওয়া যাক আমরা সি ব্যবহার করছি, তারা কীভাবে write
বা ব্যবহার করে একক চর মুদ্রণ করতে জানে printf
। তারা নিয়ন্ত্রণ লুপ সম্পর্কেও জানেন।
আমি সাধারণত কয়েকটি পুনরাবৃত্তিমূলক এবং সাধারণ প্রোগ্রামিং সমস্যাগুলি না পাওয়া পর্যন্ত তাদের অবলম্বন করি:
গৌণিক
কারখানাটি বোঝার জন্য একটি খুব সাধারণ গণিত ধারণা, এবং বাস্তবায়নটি এর গাণিতিক উপস্থাপনার খুব কাছাকাছি। তবে তারা প্রথমে এটি পেতে পারে না।
বর্ণমালা
বর্ণমালা সংস্করণ তাদের পুনরাবৃত্ত বিবৃতি ক্রম সম্পর্কে চিন্তা করতে শেখানো আকর্ষণীয়। পয়েন্টারগুলির মতো, তারা এলোমেলোভাবে আপনার দিকে লাইন ফেলে দেবে। মুল বক্তব্যটি তাদের উপলব্ধিতে এনে দেওয়া হয় যে শর্তগুলি সংশোধন করে বা আপনার ফাংশনটিতে বিবৃতিগুলির ক্রমটি উল্টিয়ে একটি লুপ বিপরীত করা যেতে পারে । বর্ণমালা মুদ্রণ সাহায্য করে কারণ এটি তাদের জন্য ভিজ্যুয়াল কিছু। কেবল তাদের একটি ফাংশন লিখুন যা প্রতিটি কলের জন্য একটি অক্ষর মুদ্রণ করবে এবং পরবর্তী (বা পূর্ববর্তী) একটি লিখতে নিজেকে পুনরাবৃত্তি বলে।
এফপি অনুরাগীরা, আউটপুট স্ট্রিমে প্রিন্টিং স্টাফ আপাতত একটি পার্শ্ব প্রতিক্রিয়া এই বিষয়টি এড়িয়ে যান ... আসুন এফপি-ফ্রন্টে খুব বিরক্তিকর হয়ে উঠবেন না। (তবে আপনি যদি তালিকার সহায়তার সাথে কোনও ভাষা ব্যবহার করেন তবে প্রতিটি পুনরাবৃত্তির একটি তালিকাতে নির্দ্বিধায় দ্বিধা বোধ করুন এবং কেবল চূড়ান্ত ফলাফলটি মুদ্রণ করুন But তবে সাধারণত আমি এগুলি সি দিয়ে শুরু করি যা দুর্ভাগ্যক্রমে এই ধরণের সমস্যা এবং ধারণার জন্য সেরা নয়) ।
Exponentiation
ক্ষমতার সমস্যাটি কিছুটা বেশি কঠিন ( শেখার এই পর্যায়ে )। স্পষ্টতই ধারণাটি বাস্তবে সম্পর্কিত হিসাবে ঠিক একই রকম এবং এতে কোনও জটিলতা নেই ... কেবলমাত্র আপনার একাধিক পরামিতি রয়েছে। এবং এটি সাধারণত মানুষকে বিভ্রান্ত করতে এবং শুরুতে তাদের ফেলে দিতে যথেষ্ট।
এর সাধারণ ফর্ম:
পুনরাবৃত্তি দ্বারা এটি প্রকাশ করা যেতে পারে:
কঠিনতর
এই সাধারণ সমস্যাগুলি একবার টিউটোরিয়ালগুলিতে প্রদর্শিত এবং পুনরায় প্রয়োগ করা হলে আপনি কিছুটা আরও কঠিন (তবে খুব ক্লাসিক) অনুশীলন দিতে পারেন:
- ফিবানচি নম্বর,
- গরিষ্ঠ সাধারণ গুণনীয়ক ,
- 8-কুইন্স সমস্যা,
- হ্যানয় এর টাওয়ার্স খেলা,
- এবং যদি আপনার কোনও গ্রাফিকাল পরিবেশ থাকে (বা এর জন্য বা কোনও টার্মিনাল আউটপুটের জন্য কোড স্টাব সরবরাহ করতে পারে বা তারা এটি ইতিমধ্যে পরিচালনা করতে পারে), জিনিসগুলি:
- এবং ব্যবহারিক উদাহরণের জন্য, লেখার বিষয়টি বিবেচনা করুন:
- একটি ট্রি ট্রভারসাল অ্যালগরিদম,
- একটি সাধারণ গাণিতিক এক্সপ্রেশন পার্সার,
- একটি মাইনসুইপার গেম
দ্রষ্টব্য: আবার, এর মধ্যে কিছু সত্যিই খুব কঠিন নয় ... তারা ঠিক একই কোণ বা কিছুটা আলাদা থেকে সমস্যাটি দেখায়। অনুশীলন নিখুঁত করে তোলে।
সাহায্যকারী
একটি রেফারেন্স
কিছু পড়া কখনই ব্যাথা করে না। ঠিক আছে এটি প্রথমে হবে, এবং তারা আরও বেশি হারিয়ে যাওয়া অনুভব করবে। এটি এমন এক ধরণের জিনিস যা আপনার উপরে বৃদ্ধি পায় এবং এটি একদিন আপনার মাথার পেছনে বসে থাকে যতক্ষণ না আপনি বুঝতে পারেন যে আপনি শেষ পর্যন্ত তা পেয়ে গেছেন। এবং তারপরে আপনি ভাবেন এই জিনিসগুলির পিছনে। পুনরাবৃত্তির , পুনরাবৃত্তির কম্পিউটার বিজ্ঞান এবং পুনরাবৃত্তি সম্পর্ক পৃষ্ঠাগুলি উইকিপিডিয়ায় এখন জন্য করতে হবে।
শ্রেনী / গভীরতা
ধরে নেওয়া আপনার ছাত্রদের কোডিংয়ের খুব বেশি অভিজ্ঞতা নেই, কোড স্টাব সরবরাহ করুন। প্রথম চেষ্টার পরে, তাদের একটি মুদ্রণ ফাংশন দিন যা পুনরাবৃত্তির স্তর প্রদর্শন করতে পারে। স্তরের সংখ্যাগত মান মুদ্রণ সাহায্য করে।
স্ট্যাক-এ-ড্রয়ার্স ডায়াগ্রাম
মুদ্রিত ফলাফল (বা স্তরের আউটপুট) এন্ডেন্ট করা পাশাপাশি সহায়তা করে, কারণ এটি আপনার প্রোগ্রামটি কী করছে তার একটি আরও দৃশ্যমান উপস্থাপনা দেয়, ফাইল সিস্টেম এক্সপ্লোরারে ড্রয়ারের মতো স্ট্যাক প্রসঙ্গ খুলতে এবং বন্ধ করে দেয় বা ফোল্ডারগুলি।
পুনরাবৃত্তি সংক্ষিপ্ত শব্দ
আপনার ছাত্র যদি ইতিমধ্যে কম্পিউটার সংস্কৃতি সম্পর্কে কিছুটা দক্ষ হয় তবে তারা ইতিমধ্যে পুনরাবৃত্ত সংক্ষিপ্ত শব্দগুলি ব্যবহার করে কিছু প্রকল্প / সফ্টওয়্যার নামের সাথে ব্যবহার করতে পারে । এটি traditionতিহ্য ছিল কিছু সময়ের জন্য, বিশেষত জিএনইউ প্রকল্পগুলিতে। কিছু উদাহরণ অন্তর্ভুক্ত:
রিকার্সিভ:
- জিএনইউ - "জিএনইউ'র ইউনিক্স নয়"
- নাগিওস - "নাগিওস সাঁইথুডের উপর জোর দেবে না"
- পিএইচপি - "পিএইচপি হাইপারটেক্সট প্রিপ্রসেসর" (এবং মূল "ব্যক্তিগত হোম পৃষ্ঠা")
- ওয়াইন - "ওয়াইন একটি এমুলেটর নয়"
- জিল - "জিল হ'ল লসী ইমাকস"
পারস্পরিক পুনরাবৃত্তি:
- এইচআরডি - "ইউনিক্স-রিপ্লেসিং ডেমনস এর এইচআইআরডি" (যেখানে এইচআইআরডি হ'ল "গভীরতার প্রতিনিধিত্বকারী ইন্টারফেসগুলির এইচআরডি")
তাদের নিজের সাথে আসতে চেষ্টা করুন।
একইভাবে, গুগলের পুনরাবৃত্ত অনুসন্ধান সংশোধনীর মতো পুনরাবৃত্ত রসিকতার অনেকগুলি ঘটনা রয়েছে । পুনরাবৃত্তি সম্পর্কিত আরও তথ্যের জন্য, এই উত্তরটি পড়ুন ।
বিপদ এবং আরও পড়াশোনা
কিছু সমস্যা যার সাথে লোকেরা সাধারণত লড়াই করে এবং এর জন্য আপনার উত্তরগুলি জানা দরকার।
কেন, হে আল্লাহ কেন ???
তুমি ওটা কেন করবে? একটি ভাল তবে অপ্রত্যাশিত কারণটি হ'ল প্রায়শই সেইরকম সমস্যা প্রকাশ করা সহজ। একটি তাত্পর্যপূর্ণ না হলেও সুস্পষ্ট কারণ হ'ল এটি প্রায়শই কম টাইপ করে (যদিও কেবল পুনরাবৃত্তি ব্যবহারের জন্য তাদেরকে soooo l33t বোধ করবেন না ...)।
পুনরাবৃত্তির পদ্ধতির ব্যবহার করার সময় কিছু সমস্যা অবশ্যই সমাধান করা সহজ। সাধারণত, ডিভাইড এবং কনকয়ের দৃষ্টান্ত ব্যবহার করে আপনি যে কোনও সমস্যার সমাধান করতে পারেন তা একাধিক শাখার পুনরাবৃত্তি অ্যালগরিদম ফিট করে।
আবার কি ??
আমার n
বা (আপনার পরিবর্তকের নাম যাই হোক না কেন) প্রতিবার আলাদা হয়? ভেরিয়েবল এবং প্যারামিটার কী তা বুঝতে প্রাথমিকভাবে সমস্যা হয় n
এবং আপনার প্রোগ্রামে নামযুক্ত জিনিসগুলির কীভাবে আলাদা আলাদা মান থাকতে পারে। সুতরাং এখন যদি এই মান নিয়ন্ত্রণ লুপ বা পুনরাবৃত্তি হয়, এটি আরও খারাপ! সুন্দর হোন এবং সর্বত্র একই পরিবর্তনশীল নামগুলি ব্যবহার করবেন না এবং এটি পরিষ্কার করুন যে প্যারামিটারগুলি কেবল পরিবর্তনশীল ।
শর্তসমূহ শেষ
আমি আমার শেষ অবস্থাটি কীভাবে নির্ধারণ করব? এটি সহজ, কেবল তাদের উচ্চ পদক্ষেপগুলি উচ্চস্বরে বলতে দিন। উদাহরণস্বরূপ 5 থেকে শুরু, তারপর 4, তারপরে ... 0 পর্যন্ত 0।
শয়তান বিশদে রয়েছে
টেল কল অপ্টিমাইজেশানের মতো প্রথম দিকের কথাগুলি বলবেন না । আমি জানি, আমি জানি, টিসিও দুর্দান্ত, তবে তারা প্রথমে যত্ন করে না। প্রক্রিয়াটির চারপাশে মাথাটি এমনভাবে মুড়ে ফেলার জন্য তাদের কিছু সময় দিন যা তাদের পক্ষে কাজ করে। পরে তাদের পৃথিবী আবার ছিন্নবিচ্ছিন্ন মনে করুন, তবে তাদের বিরতি দিন।
একইভাবে, কল স্ট্যাক এবং এর মেমরির খরচ এবং ... ভাল ... স্ট্যাকের ওভারফ্লো সম্পর্কে প্রথম বক্তৃতা থেকে সরাসরি কথা বলবেন না । আমি প্রায়শই ব্যক্তিগতভাবে টিউটরকারী শিক্ষার্থীরা, যারা আমাকে লেকচার দেখায় যেখানে তাদের পুনরাবৃত্তি সম্পর্কে জানতে হবে এমন সব কিছু সম্পর্কে 50 টি স্লাইড রয়েছে যখন তারা সবেমাত্র এই পর্যায়ে সঠিকভাবে একটি লুপ লিখতে পারে। এটি পরে কীভাবে একটি রেফারেন্স সাহায্য করবে এটির একটি দুর্দান্ত উদাহরণ কিন্তু এখনই আপনাকে গভীরভাবে বিভ্রান্ত করে ।
তবে দয়া করে যথাযথ সময়ে এটি পরিষ্কার করুন যে পুনরাবৃত্তি বা পুনরাবৃত্ত রুটে যাওয়ার কারণ রয়েছে ।
পারস্পরিক পুনরাবৃত্তি
আমরা দেখেছি যে ফাংশনগুলি পুনরাবৃত্ত হতে পারে এবং এমনকি তাদের একাধিক কল পয়েন্ট থাকতে পারে (8-কুইনস, হ্যানয়, ফিবোনাচি এমনকি মাইনসাইপারের জন্য অনুসন্ধানের অ্যালগরিদম)। তবে পারস্পরিক পুনরাবৃত্তি কলগুলি কী? এখানেও গণিত দিয়ে শুরু করুন। f(x) = g(x) + h(x)
যেখানে g(x) = f(x) + l(x)
এবং h
এবং l
মাত্র কাপড় না।
শুধু গাণিতিক সিরিজ দিয়ে শুরু করার ফলে চুক্তিটি স্পষ্টভাবে অভিব্যক্তি দ্বারা সংজ্ঞায়িত হওয়ায় লেখা এবং প্রয়োগ করা সহজ করে তোলে। উদাহরণস্বরূপ, হাফস্ট্যাটার মহিলা এবং পুরুষের অনুক্রম :
তবে কোডের ক্ষেত্রে, এটি লক্ষণীয় যে পারস্পরিক পুনরাবৃত্তি সমাধানের প্রয়োগটি প্রায়শই কোডের নকল করে এবং তার পরিবর্তে একটি একক পুনরাবৃত্ত আকারে প্রবাহিত করা উচিত ( পিটার নরভিগের প্রতিটি সুডোকু ধাঁধা সমাধান করা দেখুন ) ।