이 섹션에서는 흥미로운 질문을 보게 될 것입니다. 숫자가 주어졌다고 가정해보자. 이 숫자를 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 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
위 내용은 C 프로그램에서 숫자 배열로 표현되는 숫자에 1을 추가하시겠습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!