এই अनुभাগে আমরা একটি আকর্ষণীয় সমস্যা দেখব। ধরা যাক একটি সংখ্যা দেওয়া আছে। এই সংখ্যাকে ১ দ্বারা বাড়াতে হবে। এটি অত্যন্ত সহজ কাজ। কিন্তু এখানে সংখ্যাটিকে একটি অ্যারে হিসেবে রাখা হবে। সংখ্যার প্রতিটি অঙ্ক অ্যারের একটি উপাদান হিসেবে থাকবে। যদি সংখ্যা ৫১২ হয়, তবে এটি {৫, ১, ২} হিসেবে সংরক্ষিত হবে। এবং আমাদের রিকার্সিভ পদ্ধতিতে সংখ্যা বাড়াতে হবে। স্পষ্ট ধারণার জন্য অ্যালগরিদমটি দেখে নেওয়া যাক।
অ্যালগরিদম
increment(arr, n, index)
শুরুতে index-এর ডিফল্ট মান ০
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){ //যদি অঙ্ক ৯ ছোট হয়, ১ যোগ করুন num_arr[index]++; }else{ //অন্যথায় রিকার্সিভভাবে সংখ্যা বাড়ান num_arr[index] = 0; increment(num_arr, n, index+1); } } if(index == n){ num_arr[n] = 1; //অতিরিক্ত ক্যারি যোগ করুন n++; //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