首页 >后端开发 >C++ >递归程序打印所有小于N的仅由数字1或3组成的数字

递归程序打印所有小于N的仅由数字1或3组成的数字

王林
王林转载
2023-08-29 23:05:061435浏览

递归程序打印所有小于N的仅由数字1或3组成的数字

我们有一个整数变量 N 来存储正整数类型值。任务是递归打印小于给定值 N 的所有数字,其中包含数字 1、3 或两者的组合。

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

输入− int num = 40

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

解释 − 我们得到一个存储在变量 num 中的正整数值 40。现在,我们将递归地找出所有包含数字 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

输出

输出− 错误输入

解释

− 我们在参数num中的正整数值1中设置了一个存储。现在,我们将逐次查找所有包含数字1、3或两者的数字,并且这些数字小于1 是 0,因为唯一小于 1 的正整数是 0,因此输出是错误的输入。
  • 下面程序中使用的方法如下

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

    • 函数 Recursive_Numbers(num) 内部

    • 声明一个变量作为 bool 类型的检查,并设置为 1。

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

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

    • 检查检查如果是1,则打印num。

    将递归调用递归调用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;
}

输出🎜🎜🎜🎜如果我们运行上述代码,将生成以下输出🎜
Recursive program to print all numbers less than N which consist of digits 1 or 3 only are: 33 31
13 11 3 1
🎜

以上是递归程序打印所有小于N的仅由数字1或3组成的数字的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文转载于:tutorialspoint.com。如有侵权,请联系admin@php.cn删除