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

C++에서만 숫자 1 또는 3으로 구성된 N보다 작은 모든 숫자를 인쇄하는 재귀 프로그램

<시간/>

양의 정수 유형 값을 저장하는 N으로 정수 변수가 제공됩니다. 작업은 숫자 1, 3 또는 둘의 조합을 갖는 주어진 값 N보다 작은 모든 숫자를 재귀적으로 인쇄하는 것입니다.

여기에 대한 다양한 입력 출력 시나리오를 살펴보겠습니다 -

입력 - 정수 숫자 =40

출력 − 숫자 1 또는 3으로만 구성된 N보다 작은 모든 숫자를 인쇄하는 재귀 프로그램은 다음과 같습니다. 33 31 13 11 3 1

설명 - 변수 num에 저장된 양의 정수 값이 40으로 주어집니다. 이제 1, 3 또는 둘 다를 포함하는 모든 숫자를 재귀적으로 찾을 것이며 40보다 작은 숫자는 1, 3, 11, 13, 31, 33입니다.

입력 - 정수 숫자 =5

출력 − 숫자 1 또는 3으로만 구성된 N보다 작은 모든 숫자를 인쇄하는 재귀 프로그램은 다음과 같습니다. 3 1

설명 - 변수 num에 저장된 양의 정수 값이 40으로 주어집니다. 이제 1, 3 또는 둘 다를 포함하는 모든 숫자를 재귀적으로 찾을 것이며 5보다 작은 숫자는 1과 3입니다.

입력 - 정수 숫자 =1

출력 - 잘못된 입력

설명 - 변수 num에 저장된 양의 정수 값이 1로 주어집니다. 이제 1, 3 또는 둘 다를 포함하는 모든 숫자를 재귀적으로 찾을 것이며 1보다 작은 양의 정수는 0이므로 출력이 잘못된 입력이므로 1보다 작은 숫자는 0입니다.

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

  • 정수 변수를 num으로 입력합니다. 함수에 매개변수로 num을 전달하여 Recursive_Numbers(num) 함수에 전달합니다.

  • Recursive_Numbers(num)

    함수 내부
    • bool 유형의 검사로 변수를 선언하고 1로 설정하십시오.

    • 숫자가 0보다 큰지 확인한 다음 온도가 0보다 큰 동안 시작하고 1로 확인합니다. 숫자를 온도 % 10으로 설정합니다.

    • IF 숫자가 1과 같지 않고 숫자가 3과 같지 않은지 확인한 다음 확인을 0으로 설정합니다. 설정 온도 =temp / 10.

    • IF 검사가 1인지 확인한 다음 번호를 인쇄하십시오.

    • Recursive_Numbers(num - 1)

      함수를 재귀적으로 호출합니다.

예시

#include <iostream>
using namespace std;
void Recursive_Numbers(int num){
   bool check = 1;
   int temp = num;
   if(num > 0){
      while(temp > 0 && check == 1){
         int digit = temp % 10;
         if (digit != 1 && digit != 3){
            check = 0;
         }
         temp = temp / 10;
      }
      if(check == 1){
         cout<< num << " ";
      }
      Recursive_Numbers(num - 1);
   }
}
int main(){
   int num = 40;
   if(num <= 1){
      cout<<"Wrong input";
   }
   else{
      cout<<"Recursive program to print all numbers less than N which consist of digits 1 or 3 only are: ";
      Recursive_Numbers(num);
   }
   return 0;
}

출력

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

Recursive program to print all numbers less than N which consist of digits 1 or 3 only are: 33 31
13 11 3 1