递归程序打印所有小于 N 的数字,这些数字仅在 C++ 中由数字 1 或 3 组成

我们得到一个整数变量作为 N 存储正整数类型值。任务是递归打印所有小于给定值 N 且具有数字 1、3 或两者组合的数字。

让我们看看这个的各种输入输出场景 -

输入 - int num = 40

输出 - 打印所有小于 N 且仅由数字 1 或 3 组成的数字的递归程序是:33 31 13 11 3 1

说明 - 我们给出了一个正整数值,如 40 存储在变量 num 中。现在,我们将递归地找出所有包含数字 1、3 或两者的数字,并且那些小于 40 的数字是 1、3、11、13、31、33

输入 - int num = 5

输出 - 打印所有小于 N 且仅由数字 1 或 3 组成的数字的递归程序是: 3 1

说明 - 我们给出了一个正整数值,如 40 存储在变量 num 中。现在,我们将递归地找出所有包含数字 1、3 或两者的数字,并且那些小于 5 的数字是 1 和 3。

输入 - int num = 1

输出 - 错误输入

说明 - 我们给定一个正整数值作为 1 存储在变量 num 中。现在,我们将递归找出所有包含数字 1、3 或两者的数字,并且那些小于 1 的数字是 0,因为唯一小于 1 的正整数是 0,因此,输出是错误的输入。

下面程序中使用的方法如下

  • 输入一个整数变量作为 num。通过Recursive_Numbers(num)将 num 作为参数传递给函数,将其传递给函数。

  • 函数内部 Recursive_Numbers(num)

    • 将变量声明为 bool 类型的检查并将其设置为 1。

    • 检查 IF num 大于 0,然后启动 WHILE temp 大于 0 并检查为 1。将数字设置为 temp % 10。

    • 检查 IF 数字不等于 1 AND 数字不等于 3 然后将检查设置为 0。设置 temp = temp / 10。

    • 检查 IF check 为 1 然后打印 num。

    • 对函数 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<<"打印所有小于 N 且仅由数字 1 或 3 组成的数字的递归程序是: ";
      Recursive_Numbers(num);
   }
   return 0;
}
输出结果

如果我们运行上面的代码,它将生成以下输出

打印所有小于 N 且仅由数字 1 或 3 组成的数字的递归程序是: 33 31
13 11 3 1