এই সমস্যাটি মূলত অ্যালগরিদমে ফোকাস করছে, সম্ভবত কিছু বিমূর্ত এবং আরও শিক্ষামূলক academic
উদাহরণটি একটি চিন্তার প্রস্তাব দিচ্ছে, আমি জেনেরিক উপায় চাই, সুতরাং উদাহরণটি কেবলমাত্র আপনার চিন্তাভাবনা সম্পর্কে আমাদের আরও স্পষ্ট করে তুলতে ব্যবহৃত হয়।
সাধারণভাবে বলতে গেলে, একটি লুপকে পুনরাবৃত্তিতে রূপান্তর করা যায়।
উদাহরণ:
for(int i=1;i<=100;++i){sum+=i;}
এবং এটি সম্পর্কিত পুনরাবৃত্ত হয়:
int GetTotal(int number)
{
if (number==1) return 1; //The end number
return number+GetTotal(number-1); //The inner recursive
}
এবং অবশেষে এটি সহজ করার জন্য, একটি লেজ পুনরুক্তি প্রয়োজন:
int GetTotal (int number, int sum)
{
if(number==1) return sum;
return GetTotal(number-1,sum+number);
}
তবে বেশিরভাগ ক্ষেত্রে উত্তর দেওয়া এবং বিশ্লেষণ করা এত সহজ নয়। আমি যা জানতে চাই তা হ'ল:
1) আমরা কি একটি লুপকে (কখন / কখন ……) পুনরাবৃত্তিতে রূপান্তর করতে একটি "সাধারণ সাধারণ উপায়" পেতে পারি? এবং রূপান্তর করার সময় আমাদের কী ধরণের বিষয়গুলিতে মনোযোগ দেওয়া উচিত? রূপান্তর প্রক্রিয়াটির সাথে সাথে কয়েকটি নমুনা এবং আপনার পার্সুডো তত্ত্বের সাথে বিস্তারিত তথ্য লেখাই ভাল।
2) "রিকার্সিভ" এর দুটি রূপ রয়েছে: লাইনলি রিকার্সিভ এবং টেইল-রিকার্সিভ। তাহলে রূপান্তর করা ভাল কোনটি? আমাদের কোন "বিধি" আয়ত্ত করা উচিত?
3) কখনও কখনও আমাদের পুনরাবৃত্তির "ইতিহাস" রাখা প্রয়োজন, এটি সহজেই একটি লুপ বিবৃতিতে সম্পন্ন করা যায়:
উদাহরণ:
List<string> history = new List<string>();
int sum=0;
for (int i=1;i<=100;++i)
{
if(i==1) history.Add(i.ToString()+"'s result is:1.");
else
{
StringBuilder sub = new StringBuilder();
for(int j=1;j<=i;++j)
{
if(j==i) sbu.Append(j.ToString());
else
{
sub.Append(j.ToString()+"+");
}
}
sum +=i;
sbu.Append("'s result is:"+sum+Environment.NewLine);
}
}
নীচে ফলাফল:
1 এর ফলাফল 1।
1 + 2 এর ফলাফল 3।
1 + 2 + 3 এর ফলাফল 6 …………
তবে আমি মনে করি ইতিহাসকে পুনরাবৃত্তিতে রাখা শক্ত, কারণ একটি পুনরাবৃত্তভিত্তিক অ্যালগরিদম শেষ ফলাফলটি পাওয়ার দিকে মনোনিবেশ করে এবং কল-ব্যাক রিটার্ন করে। সুতরাং এগুলি সমস্ত প্রোগ্রামিং ভাষা দ্বারা স্বয়ংক্রিয়ভাবে স্ট্যাক আকারে মেমরি বরাদ্দ করে স্ট্যাকের মাধ্যমে সম্পন্ন হয়। এবং কীভাবে আমরা প্রতিটি "স্ট্যাক মানগুলি" বের করে নিতে এবং পুনরাবৃত্ত আলগোরিদিমের মাধ্যমে একাধিক মান ফিরিয়ে দিতে পারি?
এবং "একটি পুনরাবৃত্ত আলগোরিদিম থেকে একটি লুপ" সম্পর্কে কী? এগুলি কি একে অপরে রূপান্তরিত হতে পারে (আমি মনে করি এটি তাত্ত্বিকভাবে করা উচিত, তবে আমি আমার চিন্তাভাবনা প্রমাণ করার জন্য আরও সঠিক জিনিস চাই) ।