首页 > 后端开发 > C++ > 正文

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

王林
发布: 2023-08-29 23:05:06
转载
1437人浏览过

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

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 − 我们给定了一个存储在变量num中的正整数值为1。现在,我们将递归地找出所有包含数字1、3或两者的数字,并且这些数字小于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;
}
登录后复制

输出

如果我们运行上述代码,将会生成以下输出

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网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号