পুনরাবৃত্ত অ্যালগরিদম: বর্ণনা, বিশ্লেষণ, বৈশিষ্ট্য এবং উদাহরণ

সুচিপত্র:

পুনরাবৃত্ত অ্যালগরিদম: বর্ণনা, বিশ্লেষণ, বৈশিষ্ট্য এবং উদাহরণ
পুনরাবৃত্ত অ্যালগরিদম: বর্ণনা, বিশ্লেষণ, বৈশিষ্ট্য এবং উদাহরণ
Anonim

পুনরাবৃত্তির আধুনিক উপলব্ধি: কার্যকারিতার সংজ্ঞা এবং বাইরে থেকে এবং এই কার্যকারিতা থেকে এটিতে অ্যাক্সেস। এটা বিশ্বাস করা হয় যে গণিতবিদদের দ্বারা পুনরাবৃত্তির জন্ম হয়েছিল: ফ্যাক্টরিয়াল ক্যালকুলেশন, অসীম সিরিজ, ফ্র্যাক্টাল, ক্রমাগত ভগ্নাংশ … যাইহোক, পুনরাবৃত্তি সর্বত্র পাওয়া যেতে পারে। বস্তুনিষ্ঠ প্রাকৃতিক আইনগুলি তাদের প্রধান অ্যালগরিদম এবং প্রকাশের ফর্ম (অস্তিত্ব) হিসাবে পুনরাবৃত্তিকে "বিবেচনা করে" বস্তুজগতের বস্তুর মতো নয়, তবে সাধারণভাবে আন্দোলনের প্রধান অ্যালগরিদম৷

পুনরাবৃত্ত অ্যালগরিদম
পুনরাবৃত্ত অ্যালগরিদম

বিজ্ঞান ও প্রযুক্তির বিভিন্ন ক্ষেত্রের বিভিন্ন বিশেষত্বের লোকেরা পুনরাবৃত্ত অ্যালগরিদম f (x) ব্যবহার করে, যেখানে "x ~/=f (x)"। একটি ফাংশন যা নিজেকে কল করে একটি শক্তিশালী সমাধান, কিন্তু এই সমাধানটি গঠন করা এবং বোঝা বেশিরভাগ ক্ষেত্রেই একটি খুব কঠিন কাজ৷

প্রাচীন কালে, প্রাসাদের স্থান বাড়াতে রিকারশন ব্যবহার করা হত। একে অপরের দিকে নির্দেশিত আয়নাগুলির একটি সিস্টেমের মাধ্যমে, আপনি অত্যাশ্চর্য ত্রিমাত্রিক স্থানিক প্রভাব তৈরি করতে পারেন। কিন্তু এত সহজে বোঝা যায় কিভাবেএই আয়না সমন্বয়? বিভিন্ন আয়নার মাধ্যমে প্রতিফলিত মহাকাশের কোন বিন্দু কোথায় তা নির্ধারণ করা আরও কঠিন৷

পুনরাবৃত্তি, পুনরাবৃত্ত অ্যালগরিদম: অর্থ এবং সিনট্যাক্স

সমস্যা, যা অপারেশনের একটি ক্রম পুনরাবৃত্তি করে প্রণয়ন করা হয়, পুনরাবৃত্তভাবে সমাধান করা যেতে পারে। একটি সাধারণ অ্যালগরিদম (একটি দ্বিঘাত সমীকরণ গণনা করা, তথ্য সহ একটি ওয়েব পৃষ্ঠা তৈরি করার জন্য একটি স্ক্রিপ্ট, একটি ফাইল পড়া, একটি বার্তা পাঠানো…) পুনরাবৃত্তির প্রয়োজন নেই৷

আলগরিদমের প্রধান পার্থক্য যা একটি পুনরাবৃত্তিমূলক সমাধানের অনুমতি দেয়:

  • এখানে একটি অ্যালগরিদম রয়েছে যা বেশ কয়েকবার কার্যকর করা দরকার;
  • অ্যালগরিদমের ডেটা প্রয়োজন যা প্রতিবার পরিবর্তিত হয়;
  • অ্যালগরিদম প্রতিবার পরিবর্তন করতে হবে না;
  • একটি চূড়ান্ত শর্ত রয়েছে: অ্যালগরিদমটি পুনরাবৃত্তিমূলক - অসীম নয়।

সাধারণত, এটি যুক্তি দেওয়া যায় না যে এককালীন মৃত্যুদন্ড পুনরাবৃত্তির কারণের অনুপস্থিতির জন্য একটি প্রয়োজনীয় শর্ত। এছাড়াও আপনি একটি বাধ্যতামূলক চূড়ান্ত শর্তের প্রয়োজন করতে পারবেন না: অসীম পুনরাবৃত্তির নিজস্ব সুযোগ রয়েছে।

অ্যালগরিদমটি পুনরাবৃত্ত: যখন অপারেশনের একটি ক্রম বারবার সঞ্চালিত হয়, সেই ডেটাতে যা প্রতিবার পরিবর্তিত হয় এবং প্রতিবার একটি নতুন ফলাফল দেয়।

আবর্তন সূত্র

পুনরাবৃত্তির গাণিতিক বোঝাপড়া এবং প্রোগ্রামিংয়ে এর অ্যানালগ আলাদা। গণিত, যদিও প্রোগ্রামিং এর লক্ষণ আছে, কিন্তু প্রোগ্রামিং হল অনেক উচ্চ মানের গণিত।

পুনরাবৃত্ত অ্যালগরিদম চ
পুনরাবৃত্ত অ্যালগরিদম চ

একটি সুলিখিত অ্যালগরিদম তার লেখকের বুদ্ধির আয়নার মতো। সাধারণপ্রোগ্রামিং এর পুনরাবৃত্তি সূত্র হল "f(x)", যেখানে "x ~/=f(x)" এর অন্তত দুটি ব্যাখ্যা আছে। এখানে "~" হল ফলাফলের মিল বা অনুপস্থিতি, এবং "=" হল ফাংশনের ফলাফলের উপস্থিতি।

প্রথম বিকল্প: ডেটা গতিবিদ্যা।

  • ফাংশন "f(x)" এর একটি পুনরাবৃত্তিমূলক এবং অপরিবর্তনীয় অ্যালগরিদম রয়েছে;
  • "x" এবং ফলাফল "f(x)" এর প্রতিবার নতুন মান থাকে, ফলাফল "f(x)" এই ফাংশনের নতুন "x" প্যারামিটার৷

দ্বিতীয় বিকল্প: কোড গতিবিদ্যা।

  • ফাংশন "f(x)" এর বেশ কয়েকটি অ্যালগরিদম রয়েছে যা ডেটা পরিমার্জন (বিশ্লেষণ) করে;
  • ডেটা বিশ্লেষণ - কোডের একটি অংশ এবং পুনরাবৃত্ত অ্যালগরিদমগুলির বাস্তবায়ন যা পছন্দসই ক্রিয়া সম্পাদন করে - কোডের দ্বিতীয় অংশ;
  • ফাংশনের ফলাফল "f(x)" নয়।

কোন ফলাফল স্বাভাবিক নয়। প্রোগ্রামিং গণিত নয়, এখানে ফলাফলটি স্পষ্টভাবে উপস্থিত থাকতে হবে না। একটি পুনরাবৃত্ত ফাংশন কেবল সাইটগুলিকে পার্স করতে পারে এবং ডাটাবেসকে পপুলেট করতে পারে, বা ইনকামিং ইনপুট অনুযায়ী বস্তুগুলিকে তাৎক্ষণিক করতে পারে৷

ডেটা এবং পুনরাবৃত্তি

প্রোগ্রামিং রিকারসিভ অ্যালগরিদম একটি ফ্যাক্টরিয়াল গণনা করার বিষয়ে নয়, যেখানে ফাংশনটি প্রতিবার একটি প্রদত্ত মান গ্রহণ করে যা একের বেশি বা একের কম - বাস্তবায়নের বিকল্পটি বিকাশকারীর পছন্দের উপর নির্ভর করে৷

এটা কোন ব্যাপার না কিভাবে ফ্যাক্টরিয়াল "8!",অ্যালগরিদম যা কঠোরভাবে এই সূত্র অনুসরণ করে।

প্রসেসিং তথ্য একটি সম্পূর্ণ ভিন্ন ক্রমে "গণিত"। পুনরাবৃত্ত ফাংশন এবং অ্যালগরিদমগুলি এখানে অক্ষর, শব্দ, বাক্যাংশ, বাক্য এবং অনুচ্ছেদের উপর কাজ করে। প্রতিটি পরবর্তী স্তর আগেরটি ব্যবহার করে৷

ইনপুট ডেটা স্ট্রীম বিস্তৃত পরিসরে বিশ্লেষণ করা হয়, তবে বিশ্লেষণ প্রক্রিয়াটি সাধারণত পুনরাবৃত্তিমূলক হয়। ইনপুট স্ট্রীমের সমস্ত রূপের জন্য অনন্য অ্যালগরিদম লেখার কোনও মানে হয় না৷ একটি কার্যকারিতা থাকা উচিত। এখানে, পুনরাবৃত্ত অ্যালগরিদমগুলি হল ইনপুটের জন্য পর্যাপ্ত আউটপুট স্ট্রিম কীভাবে তৈরি করা যায় তার উদাহরণ। এটি পুনরাবৃত্ত অ্যালগরিদমের আউটপুট নয়, তবে এটি পছন্দসই এবং প্রয়োজনীয় সমাধান৷

বিমূর্ততা, পুনরাবৃত্তি এবং OOP

অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এবং রিকার্সন মৌলিকভাবে ভিন্ন সত্তা, কিন্তু তারা একে অপরের পরিপূরক। বিমূর্তকরণের পুনরাবৃত্তির সাথে কোন সম্পর্ক নেই, তবে OOP এর লেন্সের মাধ্যমে এটি প্রাসঙ্গিক পুনরাবৃত্তি বাস্তবায়নের সম্ভাবনা তৈরি করে।

উদাহরণস্বরূপ, তথ্য পার্স করা হচ্ছে এবং অক্ষর, শব্দ, বাক্যাংশ, বাক্য এবং অনুচ্ছেদ আলাদাভাবে হাইলাইট করা হয়েছে। স্পষ্টতই, বিকাশকারী এই পাঁচ প্রকারের বস্তুর উদাহরণ তৈরির জন্য সরবরাহ করবে এবং প্রতিটি স্তরে পুনরাবৃত্তিমূলক অ্যালগরিদমের একটি সমাধান অফার করবে৷

প্রোগ্রামিং রিকার্সিভ অ্যালগরিদম
প্রোগ্রামিং রিকার্সিভ অ্যালগরিদম

এদিকে, যদি অক্ষরের স্তরে "অর্থ খোঁজার কোন মানে নেই", তাহলে শব্দের স্তরে শব্দার্থবিদ্যা উপস্থিত হয়। আপনি শব্দগুলিকে ক্রিয়া, বিশেষ্য, ক্রিয়াবিশেষণ, অব্যয়গুলিতে ভাগ করতে পারেন… আপনি আরও এগিয়ে গিয়ে কেসগুলিকে সংজ্ঞায়িত করতে পারেন৷

বাক্যাংশ স্তরে, শব্দার্থবিদ্যা বিরাম চিহ্ন এবং যুক্তি দ্বারা পরিপূরক হয়শব্দ সংমিশ্রণ। বাক্যের স্তরে, শব্দার্থবিদ্যার আরও নিখুঁত স্তর পাওয়া যায় এবং একটি অনুচ্ছেদকে সম্পূর্ণ চিন্তা হিসাবে বিবেচনা করা যেতে পারে।

অবজেক্ট-ওরিয়েন্টেড ডেভেলপমেন্ট বৈশিষ্ট্য এবং পদ্ধতির উত্তরাধিকার পূর্বনির্ধারিত করে এবং একটি সম্পূর্ণ বিমূর্ত পূর্বপুরুষ তৈরির সাথে বস্তুর শ্রেণিবিন্যাস শুরু করার প্রস্তাব দেয়। একই সময়ে, নিঃসন্দেহে, প্রতিটি বংশধরের বিশ্লেষণ পুনরাবৃত্তিমূলক হবে এবং প্রযুক্তিগত স্তরে অনেক অবস্থানে (অক্ষর, শব্দ, বাক্যাংশ এবং বাক্য) খুব বেশি আলাদা হবে না। অনুচ্ছেদগুলি, সম্পূর্ণ চিন্তার মতো, এই তালিকা থেকে আলাদা হতে পারে, কিন্তু সেগুলি সারমর্ম নয়৷

এটি গুরুত্বপূর্ণ যে অ্যালগরিদমের অপ্রতিরোধ্য অংশটি বিমূর্ত পূর্বপুরুষ স্তরে প্রণয়ন করা যেতে পারে, বিমূর্ত স্তর থেকে কল করা ডেটা এবং পদ্ধতিগুলির সাথে প্রতিটি বংশধরের স্তরে এটিকে পরিমার্জন করা যেতে পারে। এই প্রসঙ্গে, বিমূর্ততা পুনরাবৃত্তির জন্য নতুন দিগন্ত উন্মুক্ত করে৷

OOP এর ঐতিহাসিক বৈশিষ্ট্য

OOP সফ্টওয়্যারের জগতে দুবার এসেছে, যদিও কিছু বিশেষজ্ঞ ক্লাউড কম্পিউটিংয়ের উত্থান এবং আইটি প্রযুক্তির বিকাশে একটি নতুন রাউন্ড হিসাবে অবজেক্ট এবং ক্লাস সম্পর্কে আধুনিক ধারণাগুলিকে এককভাবে তুলে ধরতে পারেন৷

OOP-এর আধুনিক প্রেক্ষাপটে "অবজেক্ট" এবং "উদ্দেশ্য" শব্দগুলি সাধারণত গত শতাব্দীর 50 এবং 60 এর দশকে দায়ী করা হয়, তবে তারা 1965 এবং সিমুলা, লিস্প, অ্যালগোল, স্মলটক-এর উত্থানের সাথে যুক্ত।.

তখন, প্রোগ্রামিং বিশেষভাবে বিকশিত ছিল না এবং বিপ্লবী ধারণাগুলিকে পর্যাপ্তভাবে সাড়া দিতে পারেনি। ধারণা এবং প্রোগ্রামিং শৈলীর সংগ্রাম (C/C ++ এবং Pascal - বেশিরভাগ) এখনও অনেক দূরে ছিল, এবং ডেটাবেসগুলি এখনও ধারণাগতভাবে গঠিত হয়েছিল।

পুনরাবৃত্তি পুনরাবৃত্ত অ্যালগরিদম
পুনরাবৃত্তি পুনরাবৃত্ত অ্যালগরিদম

80-এর দশকের শেষের দিকে এবং 90-এর দশকের শুরুর দিকে, প্যাসকেলে বস্তুগুলি উপস্থিত হয়েছিল এবং প্রত্যেকে C/C ++-এর ক্লাসগুলি মনে রেখেছিল - এটি OOP-এর প্রতি আগ্রহের একটি নতুন রাউন্ড চিহ্নিত করেছিল এবং তখনই টুলগুলি, প্রাথমিকভাবে প্রোগ্রামিং ভাষা, হয়ে ওঠেনি শুধুমাত্র অবজেক্ট-ওরিয়েন্টেড ধারনা সমর্থন করে, কিন্তু সেই অনুযায়ী বিকশিত হয়।

অবশ্যই, যদি পূর্বের রিকার্সিভ অ্যালগরিদমগুলি শুধুমাত্র প্রোগ্রামের সাধারণ কোডে ব্যবহৃত ফাংশন হয়ে থাকে, তাহলে এখন রিকার্সন একটি বস্তুর (শ্রেণী) বৈশিষ্ট্যের অংশ হয়ে উঠতে পারে, যা উত্তরাধিকার প্রসঙ্গে আকর্ষণীয় সুযোগ প্রদান করে।

আধুনিক OOP এর বৈশিষ্ট্য

OOP-এর বিকাশ প্রাথমিকভাবে অবজেক্ট (শ্রেণী)কে ডেটা এবং বৈশিষ্ট্যের (পদ্ধতি) সংগ্রহ হিসাবে ঘোষণা করেছে। আসলে, এটি এমন ডেটা সম্পর্কে ছিল যার সিনট্যাক্স এবং অর্থ রয়েছে। কিন্তু তখন বাস্তব বস্তু পরিচালনার জন্য OOP কে একটি টুল হিসেবে উপস্থাপন করা সম্ভব ছিল না।

পুনরাবৃত্ত ফাংশন এবং অ্যালগরিদম
পুনরাবৃত্ত ফাংশন এবং অ্যালগরিদম

OOP "কম্পিউটার প্রকৃতি" বস্তুগুলি পরিচালনা করার জন্য একটি হাতিয়ার হয়ে উঠেছে। একটি স্ক্রিপ্ট, একটি বোতাম, একটি মেনু আইটেম, একটি মেনু বার, একটি ব্রাউজার উইন্ডোতে একটি ট্যাগ একটি বস্তু। কিন্তু একটি মেশিন, একটি খাদ্য পণ্য, একটি শব্দ, বা একটি বাক্য নয়। বাস্তব বস্তুগুলি অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিংয়ের বাইরে থেকে গেছে, এবং কম্পিউটার সরঞ্জামগুলি একটি নতুন অবতার গ্রহণ করেছে৷

জনপ্রিয় প্রোগ্রামিং ভাষার পার্থক্যের কারণে, OOP-এর অনেক উপভাষা আবির্ভূত হয়েছে। শব্দার্থবিদ্যার পরিপ্রেক্ষিতে, তারা কার্যত সমতুল্য, এবং যন্ত্রের গোলকের উপর তাদের ফোকাস, প্রয়োগকৃত একের উপর নয়, বাস্তব বস্তুর বর্ণনাকে অতিক্রম করা সম্ভব করে তোলে।অ্যালগরিদম এবং তাদের ক্রস-প্ল্যাটফর্ম এবং ক্রস-ভাষা "অস্তিত্ব" নিশ্চিত করুন।

স্ট্যাকস এবং ফাংশন কল মেকানিজম

কলিং ফাংশনগুলির (প্রক্রিয়া, অ্যালগরিদম) জন্য মেকানিজমের জন্য ডেটা পাস করা (প্যারামিটার), ফলাফল ফেরত দেওয়া এবং অপারেটরের ঠিকানা মনে রাখা প্রয়োজন যা ফাংশন (প্রক্রিয়া) সম্পূর্ণ হওয়ার পরে নিয়ন্ত্রণ পেতে হবে৷

পুনরাবৃত্ত অ্যালগরিদম উদাহরণ
পুনরাবৃত্ত অ্যালগরিদম উদাহরণ

সাধারণত, স্ট্যাকটি এই উদ্দেশ্যে ব্যবহার করা হয়, যদিও প্রোগ্রামিং ভাষা বা বিকাশকারী নিজেই নিয়ন্ত্রণ স্থানান্তরের জন্য বিভিন্ন বিকল্প সরবরাহ করতে পারে। আধুনিক প্রোগ্রামিং স্বীকার করে যে একটি ফাংশনের নাম শুধুমাত্র একটি প্যারামিটার হতে পারে না: এটি অ্যালগরিদম কার্যকর করার সময় গঠিত হতে পারে। অন্য অ্যালগরিদম চালানোর সময় একটি অ্যালগরিদমও তৈরি করা যেতে পারে।

পুনরাবৃত্ত অ্যালগরিদমের ধারণা, যখন টাস্ক গঠনের সময় (কাঙ্খিত অ্যালগরিদম বেছে নেওয়া) তাদের নাম এবং সংস্থাগুলি নির্ধারণ করা যেতে পারে, তখন কেবল কীভাবে কিছু করতে হবে তা নয়, কার ঠিক করা উচিত তাও পুনরাবৃত্তিমূলকতাকে প্রসারিত করে। এটা কর. একটি অ্যালগরিদম এর "অর্থপূর্ণ" নাম দ্বারা নির্বাচন করা আশাব্যঞ্জক, কিন্তু অসুবিধা সৃষ্টি করে৷

ফাংশনের একটি সেটে পুনরাবৃত্ততা

আপনি বলতে পারবেন না যে একটি অ্যালগরিদম পুনরাবৃত্তিমূলক হয় যখন এটি নিজেকে কল করে এবং এটিই। প্রোগ্রামিং একটি মতবাদ নয়, এবং পুনরাবৃত্তির ধারণাটি আপনার নিজস্ব অ্যালগরিদমের শরীর থেকে নিজেকে কল করার জন্য একটি একচেটিয়া প্রয়োজনীয়তা নয়৷

ব্যবহারিক অ্যাপ্লিকেশন সবসময় একটি পরিষ্কার সমাধান দেয় না। প্রায়শই, প্রাথমিক তথ্য প্রস্তুত করতে হবে, এবং পুনরাবৃত্ত কলের ফলাফলকে অবশ্যই সমগ্র সমস্যার (সম্পূর্ণ অ্যালগরিদম) প্রেক্ষাপটে বিশ্লেষণ করতে হবেসামগ্রিক।

আসলে, শুধুমাত্র একটি পুনরাবৃত্ত ফাংশন কল করার আগে নয়, এটি সম্পূর্ণ হওয়ার পরেও, অন্য একটি প্রোগ্রাম কল করা যেতে পারে বা করা উচিত। যদি কলের সাথে কোন বিশেষ সমস্যা না থাকে: পুনরাবৃত্ত ফাংশন A() ফাংশন B() কে কল করে, যেটি কিছু করে এবং A(কে কল করে), তাহলে অবিলম্বে নিয়ন্ত্রণ ফেরত নিয়ে সমস্যা হয়। রিকার্সিভ কল সম্পূর্ণ করার পর, B() পুনরায় কল করার জন্য ফাংশন A() কে অবশ্যই নিয়ন্ত্রণ গ্রহণ করতে হবে, যেটি আবার কল করবে। স্ট্যাকের B() এ ক্রমানুসারে থাকা উচিত নিয়ন্ত্রণ ফিরিয়ে দেওয়া ভুল সমাধান।

প্রোগ্রামার পরামিতি পছন্দের মধ্যে সীমাবদ্ধ নয় এবং ফাংশনের নাম দিয়ে সেগুলি সম্পূর্ণ করতে পারে। অন্য কথায়, আদর্শ সমাধান হল B() এর নাম A() এ পাস করা এবং A() কে নিজেই B() বলা। এই ক্ষেত্রে, রিটার্নিং কন্ট্রোল নিয়ে কোন সমস্যা হবে না এবং রিকারসিভ অ্যালগরিদম বাস্তবায়ন হবে আরও স্বচ্ছ৷

আবর্তন বোঝা এবং স্তর

পুনরাবৃত্ত অ্যালগরিদম বিকাশের সমস্যা হল যে আপনাকে প্রক্রিয়াটির গতিশীলতা বুঝতে হবে। অবজেক্ট পদ্ধতিতে পুনরাবৃত্তি ব্যবহার করার সময়, বিশেষ করে একটি বিমূর্ত পূর্বপুরুষের স্তরে, এটি কার্যকর করার সময় প্রসঙ্গে আপনার নিজস্ব অ্যালগরিদম বুঝতে সমস্যা হয়৷

পুনরাবৃত্ত অ্যালগরিদম সমাধান করা
পুনরাবৃত্ত অ্যালগরিদম সমাধান করা

বর্তমানে, কল মেকানিজমগুলিতে ফাংশনের নেস্টিং লেভেল এবং স্ট্যাক ক্ষমতার উপর কোন সীমাবদ্ধতা নেই, তবে বোঝার সমস্যা রয়েছে: কোন সময়ে কোন ডেটা লেভেল বা সাধারণ অ্যালগরিদমে কোন স্থানটিকে পুনরাবৃত্ত বলা হয় ফাংশন এবং সে নিজে কত নম্বরে কল করেছে।

বিদ্যমান ডিবাগিং টুল প্রায়ই শক্তিহীন হয়প্রোগ্রামারকে সঠিক সমাধান বলুন।

লুপ এবং পুনরাবৃত্তি

এটি বিবেচনা করা হয় যে চক্রাকার কার্যকর করা পুনরাবৃত্তির সমতুল্য। প্রকৃতপক্ষে, কিছু ক্ষেত্রে, রিকার্সিভ অ্যালগরিদম শর্তসাপেক্ষ এবং চক্রাকার গঠনের সিনট্যাক্সে প্রয়োগ করা যেতে পারে।

তবে, যদি একটি পরিষ্কার বোঝা যায় যে একটি নির্দিষ্ট ফাংশন একটি পুনরাবৃত্ত অ্যালগরিদমের মাধ্যমে প্রয়োগ করতে হবে, লুপ বা শর্তসাপেক্ষ বিবৃতিগুলির কোনও বাহ্যিক ব্যবহার পরিত্যাগ করা উচিত৷

পুনরাবৃত্ত অ্যালগরিদম বাস্তবায়ন
পুনরাবৃত্ত অ্যালগরিদম বাস্তবায়ন

এখানে অর্থ হল যে একটি ফাংশন আকারে একটি পুনরাবৃত্ত সমাধান নিজেই ব্যবহার করে একটি সম্পূর্ণ, কার্যকরীভাবে সম্পূর্ণ অ্যালগরিদম হবে। এই অ্যালগরিদমটির জন্য প্রোগ্রামারকে অ্যালগরিদমের গতিশীলতা বুঝতে চেষ্টা করে এটি তৈরি করতে হবে, তবে এটি হবে চূড়ান্ত সমাধান যার জন্য বাহ্যিক নিয়ন্ত্রণের প্রয়োজন নেই৷

বাহ্যিক শর্তসাপেক্ষ এবং চক্রাকার অপারেটরগুলির যেকোন সংমিশ্রণ আমাদেরকে একটি সম্পূর্ণ ফাংশন হিসাবে পুনরাবৃত্ত অ্যালগরিদম উপস্থাপন করার অনুমতি দেবে না৷

রিকারশন কনসেনসাস এবং OOP

একটি পুনরাবৃত্ত অ্যালগরিদম বিকাশের প্রায় সমস্ত রূপেই, দুটি অ্যালগরিদম বিকাশের জন্য একটি পরিকল্পনা তৈরি হয়। প্রথম অ্যালগরিদম ভবিষ্যত বস্তুর একটি তালিকা তৈরি করে (উদাহরণ), এবং দ্বিতীয় অ্যালগরিদম আসলে একটি পুনরাবৃত্ত ফাংশন।

সর্বোত্তম সমাধান হবে রিকারশনকে একটি একক সম্পত্তি (পদ্ধতি) হিসাবে সাজানো যা আসলে রিকার্সিভ অ্যালগরিদম ধারণ করে এবং সমস্ত প্রস্তুতিমূলক কাজ অবজেক্ট কনস্ট্রাক্টরে রাখা।

একটি পুনরাবৃত্তিমূলক অ্যালগরিদম তখনই সঠিক সমাধান হবে যখন এটি কাজ করেশুধুমাত্র নিজের দ্বারা, বাহ্যিক নিয়ন্ত্রণ এবং ব্যবস্থাপনা ছাড়াই। একটি বাহ্যিক অ্যালগরিদম শুধুমাত্র কাজ করার জন্য একটি সংকেত দিতে পারে। এই কাজের ফলাফল বাহ্যিক সমর্থন ছাড়াই প্রত্যাশিত সমাধান হওয়া উচিত।

পুনরাবৃত্তি সর্বদা একটি সম্পূর্ণ স্বতন্ত্র সমাধান হওয়া উচিত।

স্বজ্ঞাত বোঝা এবং কার্যকরী সম্পূর্ণতা

যখন অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ডি ফ্যাক্টো স্ট্যান্ডার্ড হয়ে ওঠে, তখন এটি স্পষ্ট হয়ে ওঠে যে কার্যকরভাবে কোড করার জন্য, আপনার নিজের চিন্তাভাবনা পরিবর্তন করতে হবে। অ্যালগরিদম কার্যকর করার সময় প্রোগ্রামারকে অবশ্যই ভাষার সিনট্যাক্স এবং শব্দার্থবিদ্যা থেকে শব্দার্থবিদ্যার গতিবিদ্যায় যেতে হবে।

পুনরাবৃত্তির বৈশিষ্ট্য: এটি সবকিছুতে প্রয়োগ করা যেতে পারে:

  • ওয়েব স্ক্র্যাপিং;
  • সার্চ অপারেশন;
  • পার্সিং টেক্সট তথ্য;
  • MS Word নথি পড়া বা তৈরি করা;
  • নমুনা বা বিশ্লেষণ ট্যাগ…

OOP এর বৈশিষ্ট্য: এটি একটি বিমূর্ত পূর্বপুরুষের স্তরে একটি পুনরাবৃত্ত অ্যালগরিদম বর্ণনা করা সম্ভব করে, তবে এটি অনন্য বংশধরদের উল্লেখ করার জন্য প্রদান করে, যার প্রত্যেকটির নিজস্ব ডেটা এবং বৈশিষ্ট্যের প্যালেট রয়েছে৷

পুনরাবৃত্ত অ্যালগরিদমের ধারণা
পুনরাবৃত্ত অ্যালগরিদমের ধারণা

পুনরাবৃত্তি আদর্শ কারণ এটির অ্যালগরিদমের কার্যকরী সম্পূর্ণতা প্রয়োজন৷ OOP সমস্ত অনন্য শিশুদের অ্যাক্সেস দিয়ে একটি পুনরাবৃত্ত অ্যালগরিদমের কর্মক্ষমতা উন্নত করে৷

প্রস্তাবিত: