পুনরাবৃত্তি - এটি কি "বিভাজন এবং বিজয়" বা "কোড পুনরায় ব্যবহার"


11

পুনরাবৃত্তি - যেমনটি আমরা সবাই জানি - সেই সমস্যাগুলির মধ্যে একটি - এটি আপনার মাথাকে জড়িয়ে থাকা আপনার প্রোগ্রামিং সমুদ্রযাত্রায় "মাইলফলক" অর্জন করার মতো মনে করে।

কিন্তু এটি আসল বিশ্বের সমস্যাগুলিতে এটি ব্যবহার করার ক্ষেত্রে আসলে - পুনরাবৃত্তির যান্ত্রিকতাগুলি জানা যথেষ্ট নয় - এক্ষেত্রে সমস্যাগুলির প্রকৃতিও বুঝতে হবে যেখানে পুনরাবৃত্তি সবচেয়ে উপযুক্ত সমাধান।

তাই আমার প্রশ্ন হল এটি...

  • "সমস্যার ধরণগুলি" কী যা পুনরাবৃত্তির সমাধানের জন্য ডাকে
  • "বিভাজন ও বিজয়" কৌশল বা "কোড পুনরায় ব্যবহার" এর একটি ফর্ম পুনরাবৃত্তি - বা, এটি তার নিজস্ব ডিজাইনের প্যাটার্ন
  • আপনি কি আমাদেরকে এমন এক বাস্তব বিশ্ব সমস্যার উদাহরণ দিতে পারেন যেখানে তাত্ক্ষণিক সমাধান হিসাবে পুনরাবৃত্তি মনে আসে

-- হালনাগাদ --

অনেকগুলি উত্তর "সত্যিকারের সমস্যাগুলি" হিসাবে গাছের আবর্তন, কৌতুক সম্পর্কিত ইত্যাদি হিসাবে উল্লেখ করছে I আমি "সত্যিকারের বাস্তব সমস্যাগুলি" পছন্দ করবো - আমাকে একটি উদাহরণ দেই ...

আমাদের কাছে পাঠ্যের একটি বিশাল চক ছিল (লিঙ্কযুক্ত তালিকার হিসাবে প্রায় 30 এমবি পাঠ্য structs) এবং সম্পূর্ণ পাঠ্য অনুসন্ধানের জন্য আমাদের এটির একটি সূচি তৈরি করতে হবে। আমাদের পুরো সূচিটি স্মৃতিতে রাখা এবং প্রতি 10 মিনিটে পাঠ্যটিকে পুনরায় সূচি দেওয়া দরকার।

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

আমার এক সহকর্মী একটি চমত্কার প্রোগ্রাম নিয়ে এসেছিলেন যা লাইনগুলির তুলনা করতে ভারী পুনরাবৃত্তি ব্যবহার করেছিল - এবং তারপরে ছাগগুলি অ্যারের সাথে পৃথক হওয়া অবস্থানগুলি সংগ্রহ করে - হ্যাঁ আমি জানি এটি বিস্মিত বলে মনে হচ্ছে - কীভাবে পুনরাবৃত্তি এখানে সহায়তা করতে পারে - তবে ইহা করেছে.

মুল বক্তব্যটি - তিনি কীভাবে দেখতে পেলেন যে পুনরাবৃত্তি ভারী ব্যবহারের মাধ্যমে এই সমস্যাটি স্মার্টলি সমাধান করা যেতে পারে?


বর্তমানে বেশিরভাগ কম্পিউটারের জিবি র‌্যাম এবং হার্ড ড্রাইভের জায়গা টিবি রয়েছে এমন কি আজকাল সত্যিই বড়?
জেবি কিং

30 মেগাবাইট বড় নাও হতে পারে - তবে আমাদের পাঠ্যটি যে ধরণের ডেটা স্ট্রাকচারের সাথে সংযুক্ত করা হয়েছিল তা বিবেচনা করে দেখি - এটি প্রকৃতপক্ষে প্রসেস - এবং ডিআইএফএফ-এর পাঠ্যক্রমের বড় অংশ was
বিশ্বাসঘাতক

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

2
আমি কি এই ভেবেই ঠিক আছি যে আপনি "কোড পুনরায় ব্যবহার" আরও "একই সিরিজের ক্রিয়াকলাপকে অনির্দিষ্টকালের জন্য নির্ধারিত সময়ের জন্য" হিসাবে চিহ্নিত করেছেন? এটি অন্য কোথাও ব্যবহারের জন্য জেনেরিক কোড লেখার অর্থে "কোড পুনরায় ব্যবহার" এর বিপরীতে।
অ্যান্ডি হান্ট

4
তবে গাছের ট্র্যাভারসাল একটি "সত্যিকারের বাস্তব সমস্যা", যা প্রায় প্রতিদিনই লোকজনের মুখোমুখি হয়।
ফ্যালকন

উত্তর:


16
  • "সমস্যার ধরণগুলি" কী যা পুনরাবৃত্তির সমাধানের জন্য ডাকে

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

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

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

  • "বিভাজন ও বিজয়" কৌশল বা "কোড পুনরায় ব্যবহার" এর একটি ফর্ম পুনরাবৃত্তি - বা, এটি তার নিজস্ব ডিজাইনের প্যাটার্ন

আমি এটিকে ডিজাইনের ধরণ বলব না। এটা প্রকাশের বিষয়। কখনও কখনও একটি পুনরাবৃত্তি এক্সপ্রেশন সহজেই আরও শক্তিশালী এবং আরও অভিব্যক্তিযুক্ত হয় এবং এইভাবে আরও ভাল এবং ক্লিনার কোড বাড়ে।

  • আপনি কি আমাদেরকে এমন এক বাস্তব বিশ্ব সমস্যার উদাহরণ দিতে পারেন যেখানে তাত্ক্ষণিক সমাধান হিসাবে পুনরাবৃত্তি মনে আসে

গাছগুলি ট্র্যাভার করার জন্য যে কোনও কিছু প্রয়োজন তা একটি পুনরাবৃত্ত আলগোরিদিম দ্বারা সঠিকভাবে প্রকাশ করা হবে।


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

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

আহ, হ্যাঁ, আপনি একেবারে ঠিক বলেছেন। আমার উচিত ছিল "ভাষা / ভাষা সংকলকগুলির প্রয়োগে যা স্ট্যাক-ভিত্তিক মেমরি ব্যবহার করে"।
জ্যাব

সাধারণভাবে বলতে গেলে, আপনিও ঠিক বলেছেন। আমি নিটপিকিংয়ে উপস্থিত হতে চাইনি।
ফ্যালকন

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

8

"বিভাজন ও বিজয়" কৌশল বা "কোড পুনরায় ব্যবহার" এর একটি ফর্ম পুনরাবৃত্তি - বা, এটি তার নিজস্ব ডিজাইনের প্যাটার্ন

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

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

আপনি কি আমাদেরকে এমন এক বাস্তব বিশ্ব সমস্যার উদাহরণ দিতে পারেন যেখানে তাত্ক্ষণিক সমাধান হিসাবে পুনরাবৃত্তি মনে আসে

গাছের আড়াআড়ি। বা আরও সাধারণত গ্রাফ ট্র্যাভারসাল। এটি উল্লেখযোগ্যভাবে একটি ফোল্ডার কাঠামো traversing অন্তর্ভুক্ত।

এবং অবশ্যই উভয় প্রাকৃতিক পুনরাবৃত্তি হিসাবে প্রকাশ করা হয় যেহেতু বিভাজন এবং বিজয় বা গতিশীল প্রোগ্রামিং ব্যবহার করে ।


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

1
@ স্টিভ 314 আমি সম্মত হই যে ডিপির ব্যবহারিক প্রয়োগ (এটি কম্পিউটার প্রোগ্রামে বা ম্যানুয়ালিই হোক) খুব কমই পুনরাবৃত্তি ব্যবহার করে। কিন্তু ধারণাটি সহজাতভাবে পুনরাবৃত্ত সম্পর্কের উপর ভিত্তি করে - যা কেবল একটি পুনরাবৃত্ত সূত্র! - এবং একটি বেস কেস।
কনরাড রুডল্ফ

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

4
what are the "problem patterns" that call for the solution of recursion

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

উল্লিখিত গাছের আবর্তনে প্রতিটি উপ-গাছ নিজেই একটি পূর্ণ গাছ, মূল গাছের মতো, এবং প্রধান গাছ অন্য গাছের মধ্যে একটি উপ-গাছ হতে পারে।

সুতরাং আমি অনুমান করি যে আপনার সহকর্মী আপনার সূচক সমস্যার স্ব-সমতা বৈশিষ্ট্যগুলি আবিষ্কার করেছেন discovered অথবা তিনি অন্য পথে গিয়ে সমস্যাটিকে একটি স্ব-সম-উপস্থাপনে রূপান্তরিত করেছিলেন।


1
+ 1- "একটি সমস্যা উপ-সমস্যার মূল সমস্যা হিসেবে খুব একই কাঠামো আছে মধ্যে ফাটানো যাবে না"
treecoder

+1 এবং প্যারাফ্রেজ করতে: যেখানে সমস্যার সমাধান শিশু স্তরগুলিতে প্রযোজ্য। আমার আসল বিশ্বের উদাহরণ ক্রেডিট কার্ডের চার্জগুলি সন্ধান করছে যা "ব্যাচে" অবদান রাখে। অ্যাকাউন্টিং সফ্টওয়্যারটির পৃথক চার্জ এবং চেক অ্যাকাউন্টে ব্যাচের জমা থাকবে। আমার মামলা এখানে একটি প্রশ্নে পরিণত হতে পারে কারণ স্ট্যাকওভারফ্লো এটি সম্পর্কে খুব তীক্ষ্ণ ছিল না। stackoverflow.com/questions/14719806
ক্রিস কে

3

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

"সমস্যার ধরণগুলি" কী যা পুনরাবৃত্তির সমাধানের জন্য ডাকে

আপনার যদি গাছের মতো কাঠামো বা অ্যালগরিদম থাকে তবে আপনার পুনরাবৃত্তি প্রয়োজন। যদি আপনার অপরিহার্য কোডটি স্ট্যাকের সাথে ডিল করে তবে আপনার পুনরাবৃত্তি দরকার need যদি আপনার অ্যালগরিদমের কোনও নির্দিষ্ট পদক্ষেপ পূর্ববর্তী পদক্ষেপের উপর নির্ভর করে (চিন্তা করুন লুপগুলি), আপনার পুনরাবৃত্তি প্রয়োজন। এখানে প্রয়োজন যেমন ব্যাবহার করা যায় তেমনি ব্যাখ্যা করা দরকার।

"বিভাজন ও বিজয়" কৌশল বা "কোড পুনরায় ব্যবহার" এর একটি ফর্ম পুনরাবৃত্তি - বা, এটি তার নিজস্ব ডিজাইনের প্যাটার্ন

কোনটিই নয়। ভাগ এবং বিজয় পুনরাবৃত্তি ব্যবহার করে তবে স্ট্যাকের সাহায্যে প্রয়োগ করা যেতে পারে। কোড পুনরায় ব্যবহার অন্য কিছু বোঝায় something সাধারণ পুনরাবৃত্তির চেয়ে ডিজাইনের ধরণগুলি আরও জটিল।

আপনি কি আমাদেরকে এমন এক বাস্তব বিশ্ব সমস্যার উদাহরণ দিতে পারেন যেখানে তাত্ক্ষণিক সমাধান হিসাবে পুনরাবৃত্তি মনে আসে

পার্সিং এবং সবকিছু যা গাছের কাঠামোর সাথে সম্পর্কিত। এমনকি অন্তর্ভুক্ত গাছ কাঠামো।


3

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

কিছু মনে রাখবেন যে কোনও সমস্যাগুলি কীভাবে কোনও ঘটনাগতের মতো পুনরাবৃত্তির সাথে খারাপভাবে সমাধান করা যায়।

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


2

"সমস্যার ধরণগুলি" কী যা পুনরাবৃত্তির সমাধানের জন্য ডাকে

খুব সাধারণ পরিভাষায়, যখন আপনি f (x) = f (g (x)) কোনও সমস্যার সমাধান করছেন তখন পুনরাবৃত্তি বলা হয় । আপনি যদি অসীম পুনরাবৃত্তির সাথে ঠিক না থাকেন তবে g (x) x এর মূল্যায়ন করা উচিত নয় ।

"বিভাজন ও বিজয়" কৌশল বা "কোড পুনরায় ব্যবহার" এর একটি ফর্ম পুনরাবৃত্তি - বা, এটি তার নিজস্ব ডিজাইনের প্যাটার্ন

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

আপনি কি আমাদেরকে এমন এক বাস্তব বিশ্ব সমস্যার উদাহরণ দিতে পারেন যেখানে তাত্ক্ষণিক সমাধান হিসাবে পুনরাবৃত্তি মনে আসে

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


-1

আপনি যখন একটি পুনরাবৃত্তির অ্যালগরিদম লিখেন, আপনি সাধারণত কোডটির সমস্যার পুনরাবৃত্ত সংজ্ঞাটি অনুবাদ করেন। তারপরে কীভাবে এটি কার্যকর করা হবে তা আপনার এমনকি জানারও দরকার নেই ।

এটি ফাংশনাল প্রোগ্রামিংয়ে ঘটে। আসলে, আপনার নির্দিষ্ট করা কি (ডেফিনেশন) বদলে কিভাবে । অন্য কথায়, আপনি বেসটি সংজ্ঞায়িত করুন এবং তারপরে একটি উপ-সমস্যার হিসাবে আপনার সমস্যার সংজ্ঞা দিন।

উদাহরণস্বরূপ Factorialঅ্যালগরিদম বিবেচনা করুন

  • বেসটি সংজ্ঞায়িত করুন: কারক (1) = 1;
  • ফ্যাক্টরিয়াল n: সংক্ষিপ্ত বিবরণ n: ফ্যাক্টরিয়াল (n) = n * ফ্যাক্টরিয়াল (এন -1);

তারপরে আপনি যখন কোন সমস্যার মুখোমুখি হন তখন আপনার ভাবনা উচিত আপনি এটি পুনরাবৃত্তভাবে সংজ্ঞা দিতে পারেন কিনা, আপনি যদি এটি পুনরাবৃত্তভাবে সংজ্ঞা দিতে পারেন তবে আপনি প্রায় সমাধান করেছেন।

যাইহোক, কোনও পুনরাবৃত্তি ফাংশন পুনরাবৃত্ত সংজ্ঞা হওয়া উচিত নয়। আপনি বেসটি সংজ্ঞায়িত করতে পারেন এবং উপ-সমস্যার সমাধান (সংজ্ঞা) এর মূল সমস্যার সমাধানটি (সংজ্ঞা) সংযুক্ত করতে পারেন। তবে এই সম্পর্কের জন্য আপনার একটি পদ্ধতির প্রয়োজন হতে পারে।

একটি উদাহরণ MergeSortযা mergeসংজ্ঞা বা উপ-অ্যারে সাজানোর পুরো অ্যারের বাছাই সমাধান সম্পর্কযুক্ত একটি অনুজ্ঞাসূচক পদ্ধতি হতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.