Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 반복되는 추가로 형성된 숫자의 재귀적 합

<시간/>

두 개의 정수 '숫자'와 '반복'이 입력으로 주어집니다. 목표는 합이 한 자릿수가 될 때까지 '반복'회 반복되는 입력 숫자의 자릿수 합을 계산하는 것입니다. 자릿수의 합으로 얻은 숫자가 한 자리 숫자가 될 때까지 이것을하십시오. 입력된 숫자가 123이고 repeat=2인 경우 123123의 자릿수의 합은 한 자릿수가 아닌 1+2+3+1+2+3=12가 됩니다. 이제 12의 자릿수의 합은 1+2=3입니다. 출력은 3

이 됩니다.

이를 위한 다양한 입력 출력 시나리오를 살펴보겠습니다.

입력 - 숫자=32 반복=3

출력 − 반복되는 추가에 의해 형성된 숫자의 재귀적 합은 다음과 같습니다. 6

설명 − 323232의 자릿수의 합은 3+2+3+2+3+2=15이고 15의 자릿수의 합은 1+5=6입니다. 6은 한 자리 숫자이므로 출력은 6이 됩니다.

입력 - 숫자=81 반복=4

출력 − 반복된 추가에 의해 형성된 숫자의 재귀적 합은 다음과 같습니다. 9

설명 − 81818181의 자릿수의 합은 1+8+1+8+1+8+1+8=36이고 36의 자릿수의 합은 3+6=9입니다. 9는 한 자리 숫자이므로 출력은 9가 됩니다.

아래 프로그램에서 사용된 접근 방식은 다음과 같습니다.

  • 두 개의 정수형 변수를 숫자로 선언하고 반복합니다. 함수에 데이터를 Recursive_Sum(숫자, 반복)으로 전달합니다.

  • 함수 내부에서 Recursive_Sum(int number, int repeat)

    • 정수 변수를 total로 선언하고 repeat * sum(number);

      으로 설정
    • 함수에 대한 호출을 sum(total)으로 반환합니다.

  • 함수 내부에서 sum(int number)

    • IF 번호가 0인지 확인한 다음 0을 반환합니다.

    • IF 번호 % 9가 0인지 확인한 다음 9를 반환합니다.

    • ELSE, 반환 번호 % 9

  • 결과를 인쇄하십시오.

예시

#include <bits/stdc++.h>
using namespace std;
int sum(int number){
   if(number == 0){
      return 0;
   }
   if(number % 9 == 0){
      return 9;
   }
   else{
      return number % 9;
   }
}
int Recursive_Sum(int number, int repeat){
   int total = repeat * sum(number);
   return sum(total);
}
int main(){
   int number = 12;
   int repeat = 4;
   cout<<"Recursive sum of digits of a number formed by repeated appends is: "<<Recursive_Sum(number, repeat);
   return 0;
}

출력

위의 코드를 실행하면 다음과 같은 출력이 생성됩니다.

Recursive sum of digits of a number formed by repeated appends is: 3