পুনরাবৃত্তি এবং Iteration মধ্যে পার্থক্য
কন্টেন্ট
পুনরাবৃত্তি এবং পুনরাবৃত্তি উভয়ই বারবার নির্দেশাবলীর সেটটি কার্যকর করে। পুনরাবৃত্তি হয় যখন কোনও ফাংশনে একটি বিবৃতি নিজেকে বারবার কল করে। পুনরাবৃত্তিটি যখন নিয়ামক শর্তটি মিথ্যা না হওয়া পর্যন্ত একটি লুপ বারবার কার্যকর করে। পুনরাবৃত্তি এবং পুনরাবৃত্তির মধ্যে প্রাথমিক পার্থক্য হ'ল একটি পুনরাবৃত্তির একটি প্রক্রিয়া, সর্বদা একটি ফাংশনে প্রয়োগ করা হয়। দ্য পুনরাবৃত্তির নির্দেশাবলীর সেটে প্রয়োগ করা হয় যা আমরা বারবার কার্যকর করতে চাই।
- তুলনা রেখাচিত্র
- সংজ্ঞা
- মূল পার্থক্য
- উপসংহার
তুলনা রেখাচিত্র
তুলনা জন্য বেস | recursion | পুনরাবৃত্তির |
---|---|---|
মৌলিক | ফাংশনটির একটি অংশের স্টেটমেন্টটি ফাংশনটিকেই কল করে। | নির্দেশাবলীর সেটটিকে বারবার সম্পাদন করার অনুমতি দেয়। |
বিন্যাস | রিকার্সিভ ফাংশনে, কেবল সমাপ্তির শর্ত (বেস কেস) নির্দিষ্ট করা হয়। | সনাক্তকরণের মধ্যে অন্তরকরণ, শর্ত, লুপ এবং আপডেটের মধ্যে বিবৃতি কার্যকরকরণ (পরিবর্তন এবং হ্রাস) নিয়ন্ত্রণ পরিবর্তনশীল অন্তর্ভুক্ত। |
পরিসমাপ্তি | পুনরাবৃত্তি কল কার্যকর না করে ফাংশনটি ফিরে আসতে বাধ্য করার জন্য একটি শর্তসাপেক্ষ বিবৃতি ফাংশনের মূল অংশে অন্তর্ভুক্ত করা হয়। | একটি নির্দিষ্ট শর্ত না পৌঁছানো পর্যন্ত পুনরাবৃত্তি বিবৃতি বারবার কার্যকর করা হয়। |
শর্ত | যদি ফাংশনটি (বেস কেস) নামক কোনও অবস্থাতে রূপান্তর না করে তবে তা অসীম পুনরাবৃত্তির দিকে পরিচালিত করে। | যদি পুনরাবৃত্তি বিবৃতিতে নিয়ন্ত্রণের শর্তটি কখনই মিথ্যা না হয়ে যায়, তা অসীম পুনরাবৃত্তির দিকে নিয়ে যায়। |
অসীম পুনরাবৃত্তি | অসীম পুনরাবৃত্তি সিস্টেমটি ক্র্যাশ করতে পারে। | অসীম লুপটি বারবার সিপিইউ চক্র ব্যবহার করে। |
ফলিত | পুনরাবৃত্তি সর্বদা ফাংশনে প্রয়োগ করা হয়। | পুনরাবৃত্তি বিবৃতি বা "লুপস" এ ইলেক্ট্রেশন প্রয়োগ করা হয়। |
গাদা | স্ট্যাকটি নতুন স্থানীয় ভেরিয়েবল এবং প্যারামিটারগুলির সেটটি প্রতিটি বার যখন ফাংশন বলা হয় তখন সংরক্ষণ করতে ব্যবহৃত হয়। | স্ট্যাক ব্যবহার করে না। |
মাথার উপরে | পুনরাবৃত্তি পুনরাবৃত্তি ফাংশন কলগুলির ওভারহেড ধারণ করে। | বারবার ফাংশন কলের ওভারহেড নেই। |
দ্রুততা | ফাঁসি কার্যকর করুন in | দ্রুত কার্যকর করা |
কোড আকার | পুনরাবৃত্তি কোডের আকার হ্রাস করে। | Iteration কোড দীর্ঘায়িত করে। |
পুনরাবৃত্তি সংজ্ঞা
সি ++ একটি ফাংশনকে তার কোডের মধ্যে কল করতে দেয়। তার অর্থ ফাংশনটির সংজ্ঞা নিজের কাছে একটি ফাংশন কল ধারণ করে। কখনও কখনও এটি "বিজ্ঞপ্তি সংজ্ঞা"। ফাংশন দ্বারা ব্যবহৃত স্থানীয় ভেরিয়েবল এবং পরামিতিগুলির সেটটি নতুনভাবে তৈরি করা হয় প্রতিটি সময় ফাংশন নিজে কল করে এবং স্ট্যাকের শীর্ষে সঞ্চিত হয়। তবে, প্রতিবার যখন কোনও ফাংশন নিজেকে কল করে তখন এটি সেই ফাংশনের একটি নতুন অনুলিপি তৈরি করে না। রিকার্সিভ ফাংশন কোডের আকারকে উল্লেখযোগ্যভাবে হ্রাস করে না এবং মেমরির ব্যবহারের উন্নতিও করে না, তবে পুনরাবৃত্তির তুলনায় এটি কিছু করে।
পুনরাবৃত্তিটি সমাপ্ত করতে, ফাংশনটি নিজেই কোনও পুনরাবৃত্ত কল না দিয়ে ফাংশনটি ফিরে আসতে বাধ্য করতে আপনাকে অবশ্যই ফাংশনের সংজ্ঞাতে একটি নির্বাচনী বিবৃতি অন্তর্ভুক্ত করতে হবে। পুনরাবৃত্তির ক্রিয়া সংজ্ঞায় নির্বাচিত স্টেটমেন্টের অনুপস্থিতি ফাংশনটিকে একবার কল করা অসীম পুনরাবৃত্তিতে দেয়।
আসুন আমরা একটি ফাংশন দিয়ে পুনরাবৃত্তি বুঝতে পারি যা সংখ্যার ফ্যাক্টরিয়াল ফিরিয়ে দেবে।
int factorial (int num) {int উত্তর; যদি (সংখ্যা == 1) {ফেরত 1; } অন্য {উত্তর = ফ্যাক্টরিয়াল (নাম -1) * সংখ্যা; // রিকার্সিভ কলিং} রিটার্ন (উত্তর); }
উপরের কোডে, অন্য অংশের বিবৃতিটি পুনরাবৃত্তি দেখায়, যেমন বিবৃতিটি ফাংশনটিকে ফ্যাক্টরিয়াল () বলে যেখানে এটি থাকে calls
Iteration সংজ্ঞা
পুনরাবৃত্তি বিবৃতিতে শর্তটি মিথ্যা না হওয়া পর্যন্ত বার বার নির্দেশের সেটটি সম্পাদন করার প্রক্রিয়া Iteration। পুনরাবৃত্তির বিবৃতিতে পুনরুক্তি বিবৃতিটির অভ্যন্তরীণ বিবরণীর সূচনা, তুলনা, সম্পাদন এবং পরিশেষে নিয়ন্ত্রণ ভেরিয়েবলের আপডেট অন্তর্ভুক্ত রয়েছে। কন্ট্রোল ভেরিয়েবল আপডেট হওয়ার পরে এটি আবার তুলনা করা হয়, এবং প্রক্রিয়াটি পুনরাবৃত্তি করে, যতক্ষণ না পুনরাবৃত্তির বিবৃতিতে শর্তটি মিথ্যা হয়ে যায় turns পুনরাবৃত্তির বিবৃতিগুলি হ'ল "for" লুপ, "যখন" লুপ, "করণীয়" লুপ।
পুনরাবৃত্তির বিবৃতি ভেরিয়েবলগুলি সঞ্চয় করতে স্ট্যাক ব্যবহার করে না। সুতরাং, পুনরাবৃত্তি ফাংশনের তুলনায় পুনরাবৃত্তির বিবৃতিটির সম্পাদন দ্রুত হয়। এমনকি পুনরাবৃত্তি ফাংশনটির পুনরাবৃত্তি ফাংশন কলিংয়ের ওভারহেড নেই যা এটির প্রয়োগটি পুনরাবৃত্ত ফাংশনের চেয়েও দ্রুত করে তোলে। নিয়ন্ত্রণ শর্তটি মিথ্যা হয়ে গেলে পুনরাবৃত্তিটি সমাপ্ত হয়। পুনরাবৃত্তির বিবৃতিতে নিয়ন্ত্রণের শর্তের অনুপস্থিতির ফলে অসীম লুপ তৈরি হতে পারে, বা এটি সংকলনের ত্রুটির কারণ হতে পারে।
আসুন উপরের উদাহরণ সম্পর্কিত পুনরাবৃত্তি বুঝতে পারি।
int factorial (int num) answer int উত্তর = 1; // এর সূচনা প্রয়োজন কারণ এটির (ইন্ট টি = 1; টি> নাম; টি ++) // এর পুনরাবৃত্তি {উত্তর = উত্তর * (টি) এর প্রাথমিককরণের আগে একটি আবর্জনা মান থাকতে পারে; রিটার্ন (উত্তর); }}
উপরের কোডে, ফাংশনটি পুনরাবৃত্তির বিবৃতি ব্যবহার করে সংখ্যার ফ্যাক্টরিয়াল দেয় returns
- পুনরাবৃত্তি হ'ল যখন কোনও প্রোগ্রামের কোনও পদ্ধতি বারবার নিজেকে কল করে, পুনরাবৃত্তি হয় যখন কোনও প্রোগ্রামের নির্দেশাবলীর সেটটি বারবার কার্যকর করা হয়।
- পুনরাবৃত্তিমূলক পদ্ধতিতে নির্দেশাবলীর সেট, স্টেটমেন্ট নিজেকে কল করে এবং একটি সমাপ্তির শর্ত থাকে যেখানে পুনরাবৃত্তির বিবৃতিতে সূচনা, বৃদ্ধি, শর্ত, একটি লুপের মধ্যে নির্দেশের সেট এবং একটি নিয়ন্ত্রণ ভেরিয়েবল থাকে।
- শর্তসাপেক্ষ বিবৃতি পুনরাবৃত্তির সমাপ্তি এবং ভেরিয়েবলের মানকে পুনরাবৃত্তি বিবৃতিটির সমাপ্তির সিদ্ধান্ত নেয়।
- যদি পদ্ধতিটি সমাপ্তির শর্তটি না নিয়ে যায় তবে তা অসীম পুনরাবৃত্তিতে প্রবেশ করে। অন্যদিকে, যদি নিয়ন্ত্রণ ভেরিয়েবল কখনই সমাপ্তির মান বাড়ে না তবে পুনরাবৃত্তির বিবৃতি অসীমভাবে পুনরাবৃত্তি করে।
- অসীম পুনরাবৃত্তি সিস্টেম ক্র্যাশ করতে পারে যেখানে অসীম পুনরাবৃত্তি সিপিইউ চক্র গ্রহণ করে।
- পুনরাবৃত্তি সর্বদা পদ্ধতিতে প্রয়োগ করা হয় তবে, নির্দেশের সেটগুলিতে পুনরাবৃত্তি প্রয়োগ করা হয়।
- পুনরাবৃত্তি চলাকালীন তৈরি ভেরিয়েবলগুলি স্ট্যাকের মধ্যে সংরক্ষণ করা হয়, যদিও পুনরাবৃত্তির জন্য স্ট্যাকের প্রয়োজন হয় না।
- পুনরাবৃত্তি পুনরাবৃত্তি ফাংশন কলিং এর ওভারহেডের কারণ ঘটায়, পুনরাবৃত্তির ক্ষেত্রে ওভারহেডের কলকরণের কোনও ফাংশন থাকে না।
- ফাংশন কলিংয়ের কারণে পুনরাবৃত্তির ওভারহেড এক্সিকিউশনটি ধীর হয়, তবে পুনরাবৃত্তির কার্যকরকরণ দ্রুত হয়।
- পুনরাবৃত্তি কোডের আকার হ্রাস করে যখন, পুনরাবৃত্তি একটি কোড দীর্ঘায়িত করে।
উপসংহার:
রিকার্সিভ ফাংশনটি লিখতে সহজ, তবে পুনরাবৃত্তির তুলনায় এগুলি ভাল সম্পাদন করে না যদিও পুনরাবৃত্তির তুলনায় পুনরুক্তিটি লেখা শক্ত তবে তাদের পারফরম্যান্স ভাল।