Dalam bahagian ini, kita akan melihat soalan yang menarik. Katakan nombor diberikan. Kita perlu menambah bilangan ini sebanyak 1. Ini adalah tugas yang sangat mudah. Tetapi di sini, kita akan meletakkan nombor sebagai tatasusunan. Setiap digit nombor diletakkan sebagai elemen tatasusunan. Jika nombornya ialah 512, maka ia akan disimpan sebagai {5, 1, 2}. Dan kita juga perlu menggunakan kaedah rekursif untuk menambah bilangan. Mari lihat algoritma untuk mendapatkan idea yang jelas.
kenaikan(arr, n, indeks) −
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 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
Atas ialah kandungan terperinci Menambah satu pada nombor yang diwakili sebagai tatasusunan digit dalam Program C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!