এই বিভাগে আমরা একটি আকর্ষণীয় সমস্যা দেখতে পাব। ধরুন একটি নম্বর দেওয়া হল। আমাদের এই সংখ্যাটি 1 দ্বারা বাড়াতে হবে। এটি অত্যন্ত সহজ কাজ। কিন্তু এখানে আমরা সংখ্যাটিকে অ্যারে হিসেবে রাখব। সেই সংখ্যার প্রতিটি অঙ্ক অ্যারের একটি উপাদান হিসাবে স্থাপন করা হয়। যদি সংখ্যাটি 512 হয়, তাহলে এটি {5, 1, 2} হিসাবে সংরক্ষণ করা হবে। এবং এছাড়াও আমাদের পুনরাবৃত্তিমূলক পদ্ধতি ব্যবহার করে সংখ্যা বাড়াতে হবে। আসুন পরিষ্কার ধারণা পেতে অ্যালগরিদম দেখি।
অ্যালগরিদম
বৃদ্ধি(arr, n, index)
প্রাথমিকভাবে সূচকের ডিফল্ট মান হল 0
begin if index < n, then if arr[index] < 9, then arr[index] := arr[index] + 1 else arr[index] := 0 increment(arr, n, index + 1) end if if index = n, then arr[n] := 1 n := n + 1 end if end
উদাহরণ
#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){ //if digit is less than 9, add 1 num_arr[index]++; }else{ //otherwise increase number recursively num_arr[index] = 0; increment(num_arr, n, index+1); } } if(index == n){ num_arr[n] = 1; //add extra carry n++; //increase 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 = i; 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 << "Initial Number: "; dispNumber(num_arr, n); increment(num_arr, n); cout << "Final Number: "; dispNumber(num_arr, n); }
আউটপুট
Initial Number: 1782698599 Final Number: 1782698600