Computer >> Máy Tính >  >> Lập trình >> lập trình C

Thêm 1 vào số được biểu diễn dưới dạng mảng (Phương pháp đệ quy)?

Cho một mảng là tập hợp các số không âm được biểu diễn dưới dạng một mảng các chữ số, hãy thêm 1 vào số đó (tăng số được biểu thị bằng các chữ số). Các chữ số được lưu trữ sao cho chữ số có nghĩa nhất là phần tử đầu tiên của mảng.

Để thêm 1 vào số được biểu thị bằng chữ số

  • Đã cho mảng từ cuối, phép cộng có nghĩa là làm tròn số cuối cùng từ 4 thành 5.

  • Nếu các phần tử cuối cùng là 9, hãy chuyển nó thành 0 và mang =1.

  • Đối với lần lặp lại tiếp theo, hãy thực hiện kiểm tra và nếu nó thêm vào 10, hãy thực hiện tương tự như bước 2.

  • Sau khi thêm carry, hãy đặt carry =0 cho lần lặp tiếp theo.

  • Nếu các vectơ thêm và tăng kích thước vectơ, hãy thêm 1 vào đầu.

Giả sử một mảng chứa các phần tử [7, 6, 3, 4] thì mảng biểu diễn số thập phân 1234 và do đó thêm 1 vào giá trị này sẽ dẫn đến kết quả là 7635. Vì vậy, mảng mới sẽ là [7, 6, 3, 5].

Ví dụ

Input: [7, 6, 9, 9]
Output: [7, 7, 0, 0]
Input: [4, 1, 7, 8, 9]
Output: [4, 1, 7, 9, 0]

Giải thích Thêm 1 vào phần tử cuối cùng của mảng, nếu nó nhỏ hơn 9. Nếu phần tử là 9, thì chuyển thành 0 và đệ quy cho phần tử còn lại của mảng.

Ví dụ

#include <iostream>
using namespace std;
void sum(int arr[], int n) {
   int i = n;
   if(arr[i] < 9) {
      arr[i] = arr[i] + 1;
      return;
   }
   arr[i] = 0;
   i--;
   sum(arr, i);
   if(arr[0] > 0) {
      cout << arr[0] << ", ";
   }
   for(int i = 1; i <= n; i++) {
      cout << arr[i];
      if(i < n) {
         cout << ", ";
      }
   }
}
int main() {
   int n = 4;
   int arr[] = {4, 1, 7, 8, 9};
   sum(arr, n);
   return 0;
}