समस्या विवरण
इस खंड में हम एक दिलचस्प समस्या देखेंगे। मान लीजिए एक संख्या दी गई है। हमें इस संख्या को 1 से बढ़ाना है। यह अत्यंत सरल कार्य है। लेकिन यहां हम संख्या को एक ऐरे के रूप में रखेंगे। उस संख्या का प्रत्येक अंक ऐरे के एक तत्व के रूप में रखा जाता है। यदि संख्या 512 है, तो इसे {5, 1, 2} के रूप में संग्रहीत किया जाएगा। और हमें रिकर्सिव दृष्टिकोण का उपयोग करके संख्या को बढ़ाना है।
एल्गोरिदम
increment(arr, n, index)
प्रारंभ में index का डिफ़ॉल्ट मान 0 है
शुरुआत
यदि index < n, तो
यदि arr[index] < 9, तो
arr[index] := arr[index] + 1
अन्यथा
arr[index] := 0
increment(arr, n, index + 1)
अंत यदि
अंत यदि
यदि index = n, तो
arr[n] := 1
n := n + 1
अंत यदि
अंत
C++ प्रोग्राम उदाहरण
#include <iostream>
#include <cmath>
#define MAX 20
using namespace std;
void increment(int num_arr[], int &n, int index = 0){
if(index < n){
if(num_arr[index] < 9){
num_arr[index]++;
}else{
num_arr[index] = 0;
increment(num_arr, n, index+1);
}
}
if(index == n){
num_arr[n] = 1;
n++;
}
}
void dispNumber(int num_arr[], int n){
for(int i = n-1; i >= 0; i--){
cout << num_arr[i];
}
cout << endl;
}
int numToArr(int num_arr[], int number){
int i = 0;
int n = log10(number) + 1;
for(int i = 0; i < n; i++){
num_arr[i] = number % 10;
number /= 10;
}
return n;
}
main() {
int number = 1782698599;
int num_arr[MAX];
int n = numToArr(num_arr, number);
cout << "प्रारंभिक संख्या: "; dispNumber(num_arr, n);
increment(num_arr, n);
cout << "अंतिम संख्या: "; dispNumber(num_arr, n);
}
आउटपुट
प्रारंभिक संख्या: 1782698599 अंतिम संख्या: 1782698600