Số được lưu dưới dạng mảng chữ số (ví dụ 512 -> {5,1,2}). Tăng số lên 1 dùng đệ quy.
Thuật toán
increment(arr, n, index=0)
NẾU index < n
NẾU arr[index] < 9: arr[index]++
NGƯỢC LẠI: arr[index]=0; increment(arr,n,index+1)
NẾU index == n: arr[n]=1; n++
Chương trình C++ ví dụ
#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 n = log10(number)+1;
for (int i=0;i
Kết quả
Initial Number: 1782698599
Final Number: 1782698600