# Recursive program to print all numbers less than N which consist of digits 1 or 3 only in C++

We are given an integer variable as N storing the positive integer type value. The task is to recursively print all the numbers less than given value N having digit 1, 3 or the combination of both.

## Let us see various input output scenarios for this −

Input − int num = 40

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

Explanation − we are given a positive integer value as 40 stored in a variable num. Now, we will recursively find out all the numbers containing digits 1, 3 or both and those numbers less than 40 are 1, 3, 11, 13, 31, 33

Input − int num = 5

Output − Recursive program to print all numbers less than N which consist of digits 1 or 3 only are: 3 1

Explanation − we are given a positive integer value as 40 stored in a variable num. Now, we will recursively find out all the numbers containing digits 1, 3 or both and those numbers less than 5 are 1 and 3.

Input − int num = 1

Output − Wrong Input

Explanation − we are given a positive integer value as 1 stored in a variable num. Now, we will recursively find out all the numbers containing digits 1, 3 or both and those numbers less than 1 are 0 because the only positive integer less than 1 is 0 therefore, output is wrong input.

## Approach used in the below program is as follows

• Input an integer variable as num. Pass it to the function Recursive_Numbers(num) by passing num as the parameter to the function.

• Inside the function Recursive_Numbers(num)

• Declare a variable as check of type bool and set it with 1.

• Check IF num greater than 0 then start WHILE temp greater than 0 AND check to 1. Set digit to temp % 10.

• Check IF digit not equals 1 AND digit not equals to 3 then set check to 0. Set temp = temp / 10.

• Check IF check is 1 then print num.

• Make a recursive call to the function Recursive_Numbers(num - 1)

## Example

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

## Output

If we run the above code it will generate the following Output

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