পুনরাবৃত্তি কী এবং আপনি কীভাবে এটি ব্যবহার করেন?

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

রিকার্সিভ ফাংশন কী?

একটি পুনরাবৃত্তি ফাংশন একটি ফাংশন যা নিজেকে কল করে। আপনি মূলত একটি ফাংশন দিয়ে একটি লুপ তৈরি করেন। আপনি যেমন কল্পনা করতে পারেন, এটি লেখার জন্য জটিল কৌশল হতে পারে। আপনি চান না যে আপনার কোড চিরকাল চলুক।

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

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

কীভাবে রিকার্সিভ ফাংশন লিখবেন

সমস্ত পুনরাবৃত্ত ফাংশন একই বেসিক কাঠামো আছে:

 FUNCTION name
IF condition THEN
RETURN result
ELSE
CALL FUNCTION name
END FUNCTION

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

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

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

সম্পর্কিত: প্রোগ্রামিং একটি ফাংশন কি?

পাইথনে পুনরাবৃত্ত ফাংশনের উদাহরণ

যখন আপনি এটি কার্যত দেখছেন তখন পুনরাবৃত্তি কীভাবে কাজ করে তা বোঝা অনেক সহজ হবে be এটি প্রদর্শনের জন্য, আসুন একটি পুনরাবৃত্ত ফাংশন লিখি যা কোনও সংখ্যার ফ্যাক্টরিয়াল দেয়।

কারখানাগুলি এর আগে একটি সংখ্যার এবং সমস্ত পূর্ণসংখ্যার পণ্যটি দেয়। উদাহরণস্বরূপ, 5 এর ফ্যাক্টরিয়ালটি 5 x 4 x 3 x 2 x 1 বা, 120।

 def factorialFunction(numberToMultiply):
if numberToMultiply == 1 :
return 1
else :
return numberToMultiply * factorialFunction(numberToMultiply - 1)

result = factorialFunction(3)
print(result)
//Outputs: 6

উপরের প্রোগ্রামটি আপনাকে 6 ফলাফল দেবে, যা 3 নম্বরের ফ্যাক্টরিয়াল This এটি প্রথমে কিছুটা বিভ্রান্ত হতে পারে। যদি আমরা ধাপে ধাপে প্রোগ্রামটি চালাই তবে এটি সহায়তা করবে।

  1. যখন ফাংশনটি ডাকা হয়, তখন নাম্বার টু মাল্টিপ্লাই 3 সমান হয়।
  2. শর্তটি পূরণ হয় নি, সুতরাং আমরা অন্য অবস্থায় চলে যাই।
  3. আমাদের ফাংশন 3 * ফেরায় তবে বিরতি দেওয়া হয়েছে। এটি ফিরে আসার বাকী মূল্য নির্ধারণের জন্য নিজেকে কল করতে হবে।
  4. যখন ফাংশনটি এইবার বলা হয়, তখন সংখ্যাটির গুণমান 2 এর সমান হয়।
  5. শর্তটি পূরণ হয় নি, সুতরাং আমরা অন্য অবস্থায় চলে যাই।
  6. আমাদের ফাংশন 2 * ফেরায় তবে বিরতি দেওয়া হয়েছে। এটি ফিরে আসার বাকী মূল্য নির্ধারণের জন্য নিজেকে কল করতে হবে।
  7. ফাংশন আবার বলা হয়। এবার, সংখ্যাগুচ্ছের মানটির সমান 1।
  8. আমাদের যদি শর্ত পূরণ হয়। ফাংশনটি ফেরত 1।
  9. পদক্ষেপ from থেকে ফাংশন এখন 2 * 1 টি পদক্ষেপ 3 এ ফিরতে পারে।
  10. তিন ধাপে ফাংশনটি এখন 3 * 2 * 1 ফিরে আসতে পারে যা 6।

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

এটি আসলে আপনার কম্পিউটার যা করে তা হ'ল বেশ কিছু। আপনি যখন ফাংশনটি কল করেন, এটি ফিরে না আসা পর্যন্ত এটি মেমরিতে রাখা হয়। এর অর্থ হ'ল পুনরাবৃত্ত ফাংশনগুলি লুপের চেয়ে অনেক বেশি মেমরি ব্যবহার করতে পারে।

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

একটি লুপটিকে একটি পুনরাবৃত্ত ফাংশনে রূপান্তর করার উপায় Example

 print("Enter an even number:")
i = int(input())
while (i % 2) != 0 :
print("That number is not even. Please enter a new number:")
i = int(input())

এই লুপটি পুনরাবৃত্তভাবে এইভাবে লেখা যেতে পারে:

 def recursiveFunction(number) :
if (number % 2) == 0 :
return number
else:
print("That number is not even. Please enter a new number:")
recursiveFunction(int(input()))

print("Enter and even number:")
i = recursiveFunction(int(input()))

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

লুপটি সেট আপ করতে, আমরা আমাদের ফাংশনটি আবার কল করি। তবে এবার, পরবর্তী ফাংশনে আমরা যে নম্বরটি পাস করব তা হ'ল ব্যবহারকারীর দ্বারা প্রবেশ করা নতুন নম্বর। পরবর্তী ফাংশন কলটি নম্বরটি পরীক্ষা করবে।

এটি সত্যিই খারাপ ফাংশন! হ্যাঁ, এটি আমাদের লুপের মতো সংখ্যাটি সমান কিনা তা পরীক্ষা করে দেখছে, তবে এটি কার্যকর নয়। প্রতিবার ব্যবহারকারী কোনও বিজোড় সংখ্যায় প্রবেশ করলে ফাংশনটি মেমরিতে অনুষ্ঠিত হয় এবং একটি নতুন ফাংশন বলা হয়। আপনি যদি যথেষ্ট সময় এটি করেন তবে আপনার স্মৃতিশক্তি শেষ হয়ে যাবে!

সম্পর্কিত: বেসিক পাইথন উদাহরণগুলি আপনাকে দ্রুত শিখতে সহায়তা করবে

একটি পুনরাবৃত্তি ফাংশনের একটি বাস্তব-বিশ্ব উদাহরণ

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

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

কল্পনা করুন যে আমরা উপরের গাছে ছয় নম্বর সন্ধান করছি। আমরা একটি পুনরাবৃত্ত ফাংশন করতে পারি যা গাছ থেকে বাম থেকে ডানে অনুসন্ধান করে। অ্যালগরিদমটি এরকম কিছু দেখায়:

 FUNCTION searchTree(branchToSearch)
IF find 6 OR end of tree THEN
RETURN result
ELSE
PROCESS branch
CALL FUNCTION searchTree(left)
CALL FUNCTION searchTree(right)
END FUNCTION

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

অ্যালগরিদম সর্বদা বাম দিকে যতদূর সম্ভব এটি অনুসন্ধান করবে। এটি একবার গাছের প্রান্তে পৌঁছে গেলে অনুসন্ধানটি (বাম) সম্পূর্ণ হবে এবং এটি ডানদিকে যাচাই করবে। উভয় পক্ষের চেক হয়ে গেলে, অনুসন্ধানটি একটি শাখাকে ব্যাক আপ করে এবং ডান দিকটি পরীক্ষা করে চালিয়ে যায়।

অ্যালগরিদমগুলি যদি পুরো গাছটি অনুসন্ধান করে, এটি এটি ক্রমে করবে:

2, 7, 2, 6, 5, 11, 5, 9, এবং 4

উপরের সিউডো-কোডটি ব্যবহার করে আপনি অনুসরণ করতে পারেন কিনা তা দেখুন।

পুনরাবৃত্তি পর্যালোচনা

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

পুনরাবৃত্তি ফাংশন লেখার সময়, আপনি কীভাবে ফাংশন থেকে প্রস্থান করতে চান তা সিদ্ধান্ত নিয়ে শুরু করুন। এরপরে, কীভাবে আপনার লুপটি সেট আপ করবেন তা নির্ধারণ করুন। পরবর্তী ফাংশন কলে কী তথ্য প্রেরণ করা দরকার এবং কী ফেরত দিতে হবে তা সনাক্ত করুন।

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