আমাদের একটি পূর্ণসংখ্যা ভেরিয়েবল দেওয়া আছে N যেটি ধনাত্মক পূর্ণসংখ্যা টাইপের মান সংরক্ষণ করে। কাজটি হল পুনরাবৃত্তিমূলকভাবে দেওয়া মান N-এর চেয়ে ছোট সকল সংখ্যা প্রিন্ট করা যাদের অঙ্ক ১, ৩ বা উভয়ের সংমিশ্রণ।
বিভিন্ন ইনপুট-আউটপুট পরিস্থিতি দেখে নিই -
ইনপুট - int num = 40
আউটপুট - ১ বা ৩ অঙ্ক নিয়ে গঠিত N-এর চেয়ে ছোট সকল সংখ্যা প্রিন্ট করার পুনরাবৃত্তিমূলক প্রোগ্রাম: 33 31 13 11 3 1
ব্যাখ্যা - আমাদের একটি ধনাত্মক পূর্ণসংখ্যা মান 40 দেওয়া আছে যা num ভেরিয়েবলে সংরক্ষিত। এখন আমরা পুনরাবৃত্তিমূলকভাবে ১, ৩ বা উভয় অঙ্ক ধারণকারী সকল সংখ্যা খুঁজে বের করব এবং ৪০-এর চেয়ে ছোট যেসব সংখ্যা সেগুলো হল 1, 3, 11, 13, 31, 33
ইনপুট - int num = 5
আউটপুট - ১ বা ৩ অঙ্ক নিয়ে গঠিত N-এর চেয়ে ছোট সকল সংখ্যা প্রিন্ট করার পুনরাবৃত্তিমূলক প্রোগ্রাম: 3 1
ব্যাখ্যা - আমাদের একটি ধনাত্মক পূর্ণসংখ্যা মান 5 দেওয়া আছে যা num ভেরিয়েবলে সংরক্ষিত। এখন আমরা পুনরাবৃত্তিমূলকভাবে ১, ৩ বা উভয় অঙ্ক ধারণকারী সকল সংখ্যা খুঁজে বের করব এবং ৫-এর চেয়ে ছোট যেসব সংখ্যা সেগুলো হল 1 এবং 3।
ইনপুট - int num = 1
আউটপুট - ভুল ইনপুট
ব্যাখ্যা - আমাদের একটি ধনাত্মক পূর্ণসংখ্যা মান 1 দেওয়া আছে যা num ভেরিয়েবলে সংরক্ষিত। এখন আমরা পুনরাবৃত্তিমূলকভাবে ১, ৩ বা উভয় অঙ্ক ধারণকারী সকল সংখ্যা খুঁজে বের করব এবং ১-এর চেয়ে ছোট যেসব সংখ্যা সেগুলো হল ০ কারণ ১-এর চেয়ে ছোট একমাত্র ধনাত্মক পূর্ণসংখ্যা হল ০, তাই আউটপুট হল ভুল ইনপুট।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি
- একটি পূর্ণসংখ্যা ভেরিয়েবল num ইনপুট নিন। এটি Recursive_Numbers(num) ফাংশনে পাস করুন num প্যারামিটার হিসেবে।
- Recursive_Numbers(num) ফাংশনের ভিতরে:
- check নামের একটি ভেরিয়েবল bool টাইপের ঘোষণা করুন এবং সেটি 1 দিয়ে সেট করুন।
- চেক করুন IF num > 0 তবে WHILE temp > 0 AND check == 1 শুরু করুন। digit = temp % 10 সেট করুন।
- চেক করুন IF digit != 1 AND digit != 3 তবে check = 0 সেট করুন। temp = temp / 10 সেট করুন।
- চেক করুন IF check == 1 তবে num প্রিন্ট করুন।
- Recursive_Numbers(num - 1) ফাংশনে পুনরাবৃত্তিমূলক কল করুন।
উদাহরণ
#include <iostream>
using namespace std;
void Recursive_Numbers(int num){
bool check = 1;
int temp = num;
if(num > 0){
while(temp > 0 && check == 1){
int digit = temp % 10;
if (digit != 1 && digit != 3){
check = 0;
}
temp = temp / 10;
}
if(check == 1){
cout<< num << " ";
}
Recursive_Numbers(num - 1);
}
}
int main(){
int num = 40;
if(num <= 1){
cout<<"Wrong input";
}
else{
cout<<"Recursive program to print all numbers less than N which consist of digits 1 or 3 only are: ";
Recursive_Numbers(num);
}
return 0;
}
আউটপুট
উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি জেনারেট হবে
Recursive program to print all numbers less than N which consist of digits 1 or 3 only are: 33 31 13 11 3 1