Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

เพิ่ม 1 ให้กับตัวเลขที่แสดงเป็นอาร์เรย์ (Recursive Approach)?


กำหนดอาร์เรย์ซึ่งเป็นชุดของตัวเลขที่ไม่เป็นลบซึ่งแสดงเป็นอาร์เรย์ของตัวเลข ให้เพิ่ม 1 ลงในตัวเลข (เพิ่มจำนวนที่แสดงด้วยตัวเลข) ตัวเลขจะถูกเก็บไว้เพื่อให้ตัวเลขที่สำคัญที่สุดคือองค์ประกอบแรกของอาร์เรย์

การเพิ่ม 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]

คำอธิบาย เพิ่ม 1 ให้กับองค์ประกอบสุดท้ายของอาร์เรย์ หากมีค่าน้อยกว่า 9 หากองค์ประกอบเป็น 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;
}