ในส่วนนี้เราจะดูปัญหาเชิงสนุกสนาน สมมติมีตัวเลขหนึ่ง ต้องเพิ่มตัวเลขนี้ขึ้น 1 ง่ายมาก แต่ที่นี่เราเก็บตัวเลขเป็นอาเรย์ แต่ละหลักเป็นองค์ประกอบของอาเรย์ ถ้าตัวเลขคือ 512 จะเก็บเป็น {5, 1, 2} และต้องเพิ่มตัวเลขด้วยวิธีเรียกซ้ำ
อัลกอริทึม
increment(arr, n, index) -
Initially the default value of index is 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
end if
if index = n, then
arr[n] := 1
n := n + 1
end if
end
ตัวอย่างโค้ด C++
#include#include #define MAX 20 using namespace std; void increment(int num_arr[], int &n, int index = 0){ if(index < n){ if(num_arr[index] < 9){ // ถ้าหลักน้อยกว่า 9 บวก 1 num_arr[index]++; }else{ // มิฉะนั้นเพิ่มตัวเลขแบบเรียกซ้ำ num_arr[index] = 0; increment(num_arr, n, index+1); } } if(index == n){ num_arr[n] = 1; // เพิ่ม carry เพิ่มเติม 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