পুনরাবৃত্তি সুবিধা কি কি?
কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ লেজ পুনরাবৃত্তিকে অনুকূল করে তুলতে পারে তবে সাধারণ শর্তে পুনরাবৃত্তি নিয়মিত লুপের চেয়ে বেশি সংস্থান গ্রহণ করে।
কিছু পুনরাবৃত্তি ফাংশনের একটি পুনরাবৃত্তি সংস্করণ থাকা কি সম্ভব?
পুনরাবৃত্তি সুবিধা কি কি?
কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ লেজ পুনরাবৃত্তিকে অনুকূল করে তুলতে পারে তবে সাধারণ শর্তে পুনরাবৃত্তি নিয়মিত লুপের চেয়ে বেশি সংস্থান গ্রহণ করে।
কিছু পুনরাবৃত্তি ফাংশনের একটি পুনরাবৃত্তি সংস্করণ থাকা কি সম্ভব?
উত্তর:
হ্যাঁ, আপনি পুনরাবৃত্তি ফাংশনগুলি পুনরাবৃত্তি হিসাবে কোড করতে পারেন। এটির মূলত আপনাকে ম্যানুয়ালি তথ্য বজায় রাখা দরকার যে অন্যথায় সংকলক দ্বারা উত্পাদিত পদ্ধতি কলিং কোড দ্বারা যত্ন নেওয়া হত।
অন্য কথায়, আপনার স্ট্যাকের প্রয়োজন যেখানে প্রতিটি এন্ট্রি এমন একটি কাঠামো যা উত্তীর্ণ প্যারামিটার এবং সমস্ত স্থানীয় ভেরিয়েবলগুলি ধারণ করে। আপনি সর্বদা স্ট্যাকের শীর্ষ সর্বাধিক এন্ট্রি নিয়ে কাজ করেন। আপনার যদি নিজেকে কল করতে হয় তবে একটি নতুন এন্ট্রি তৈরি করুন এবং স্ট্যাকের উপরে রাখুন। সম্পন্ন হয়ে গেলে নীচের একটিকে প্রকাশ করে স্ট্যাকের শীর্ষতম এন্ট্রি নিন এবং রিটার্নের মানগুলি বের করতে পূর্বের শীর্ষতম এন্ট্রিটি ব্যবহার করুন এবং সেই অনুযায়ী নতুন শীর্ষতম এন্ট্রি আপডেট করুন update
আমি আপনাকে সাধারণত একটি মেশিন কোডে এটি প্রয়োগ করা হয় তা দেখতে একটি সংকলক বই অধ্যয়ন করার পরামর্শ দিচ্ছি।
পুনরাবৃত্তি প্রায়শই পুনরাবৃত্তির চেয়ে জিনিসগুলির দিকে তাকানোর আরও প্রাকৃতিক উপায়। উদাহরণস্বরূপ, বাইনারি গাছের আন্ডার ট্র্যাভারসাল বিবেচনা করুন: inorder(left); process(); inorder(right);
স্পষ্টভাবে স্ট্যাক বজায় রাখার চেয়ে অনেক সহজ।
যতক্ষণ না আপনি খুব গভীর যান না (স্ট্যাকটি ফুঁ দিয়ে), উত্স ব্যবহারের পার্থক্যটি সাধারণত তুচ্ছ। সাধারণভাবে এটি সম্পর্কে চিন্তা করবেন না। ব্যতিক্রমগুলি থাকা সত্ত্বেও সাধারণ কোড হ্যান্ড-অপ্টিমাইজড কোডের চেয়ে সাধারণত ভাল। ডান সাধারণত দ্রুত চেয়ে ভাল।
যে কোনও পুনরাবৃত্তির অ্যালগরিদম একটি পুনরাবৃত্ত অ্যালগরিদম হিসাবে প্রকাশ করা যেতে পারে, তবে আপনাকে একটি স্পষ্ট স্ট্যাক রাখতে হবে (কল স্ট্যাকের সাথে সম্পর্কিত যা স্পষ্টভাবে পরিচালিত হয়েছে)। সর্বোপরি, আপনি যদি একটি পুনরাবৃত্ত ফাংশন সংকলন করেন, আপনি এমন কিছু পাবেন যা কোনও স্ট্যাকের হেরফের এবং ফাংশনটির মধ্য দিয়ে লুপিংয়ের উপর নির্ভর করে এবং এটি পুনরুক্তিযুক্ত।
লেজ পুনরুক্তি ফাংশন সহজেই লুপগুলিতে অনুবাদ করা যেতে পারে, এবং একটি স্ট্যাকের প্রয়োজন হয় না, তবে এটি একটি বিশেষ ক্ষেত্রে।
পুনরাবৃত্তি সুবিধা কি কি?
হ্যানয় সমস্যার টাওয়ারগুলি পুনরাবৃত্তভাবে সমাধান করার চেষ্টা করুন। একবার ছেড়ে দিলে পুনরাবৃত্ত সমাধানটি একবার দেখুন এবং এটি পুনরাবৃত্তির সাথে তুলনা করুন। কোনটি সহজ?
কিছু পুনরাবৃত্তি ফাংশনের একটি পুনরাবৃত্তি সংস্করণ থাকা কি সম্ভব?
হ্যাঁ, নীতিগতভাবে। তবে গাছের ট্র্যাভারসালগুলির মতো খুব সাধারণ কাজ সহ অনেক সমস্যার জন্য, পুনরাবৃত্ত সমাধানগুলি পুনরাবৃত্তকারীগুলির চেয়ে অনেক সহজ এবং আরও মার্জিত।
পুনরাবৃত্তি সুবিধা কি কি?
সরলতা। টেল-কল অপ্টিমাইজেশন ছাড়া এটি অবশ্যই আরও সংস্থান গ্রহণ করে (স্ট্যাক), তবে আপনি কীভাবে প্রয়োগ করবেন, বলুন, deltree
পুনরাবৃত্তি না করে জাভাতে? মোড়টি হ'ল delete()
ডিরেক্টরিগুলি কেবল খালি থাকলে মুছতে পারে; এটি পুনরাবৃত্তি সঙ্গে এখানে:
deltree(File fileOrDirectory) {
if (fileOrDirectory.isDirectory()) {
for (File subFileOrDirectory : fileOrDirectory.listFiles()) {
deltree(subFileOrDirectory);
}
}
fileOrDirectory.delete();
}
আমি বিশ্বাস করি যে প্রোগ্রামারকে অবশ্যই বাঁচতে হবে সেই সরঞ্জামগুলির মধ্যে একটি পুনরাবৃত্তি । পুনরাবৃত্তির সাহায্যে আপনি আপনার অ্যালগরিদমগুলি "চিন্তা" করতে পারেন এবং ঠিক যেমনটি আপনি এ সম্পর্কে ভেবেছিলেন সেগুলি সমাধান করতে পারেন। তবে, আমি আপনাকে অবশ্যই সতর্ক করে দেব, প্রত্যেকেই বলছে যে কত সুন্দর পুনরাবৃত্তি হয় এবং কোডটিতে সরলতা কতটা নিয়ে আসে, সে সম্পর্কে আমার কিছু কথা বলতে হবে:
এই জিনিসগুলি মনে রেখে, পুনরাবৃত্তি শিখুন! এটি মজার, জটিল এবং এটি আপনার মস্তিষ্ককে আঘাত করবে!
শুভকামনা করছি!