将1加到以数组表示的数字上(递归方法)?

给定一个数组,该数组是表示为数字数组的非负数的集合,请向该数字加1(增加由digits表示的数字)。存储这些数字,使得最高有效数字是数组的第一个元素。

在数字表示的数字上加1

  • 从末尾给定数组,加法表示将最后的4至5舍入。

  • 如果最后一个元素为9,则将其设为0,进位= 1。

  • 对于下一次迭代,请检查进位,如果加到10,请执行步骤2。

  • 添加进位后,使进位= 0进行下一次迭代。

  • 如果向量增加和增加了向量大小,请在开头添加1。

假设一个数组包含元素[7、6、3、4],则该数组表示十进制数字1234,因此将其加1将得到7635。因此,新数组将为[7、6、3、5]。

例子

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

解释如果数组的最后一个元素小于9,则向其添加1。如果元素为9,则使其为0,然后递归返回数组的其余元素。

示例

#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;
}