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

递归程序打印所有小于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 5are 1 and 3.

Input − int num = 1

Output − Wrong Input

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

以上就是递归程序打印所有小于N的仅由数字1或3组成的数字的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1444057.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 20:57:22
下一篇 2025年12月17日 20:57:37

相关推荐

  • css之分页打印

    这次给大家带来css之分页打印,css之分页打印的注意事项有哪些,下面就是实战案例,一起来看一下。 很久没写文章了,最近做了一个员工入职的项目,该系统有一个批量打印个人信息的功能需求。因为之前也没接触过打印这方面的功能,就上网查了下,发现jquery有个打印功能的 API(PrintArea) ,关…

    2025年12月24日
    000
  • html如何截图_使用HTML5 Canvas实现页面截图【页面】

    可在网页中截取图像的四种方法:一、用html2canvas库前端截图;二、用Canvas+SVG+foreignObject保留复杂CSS样式;三、用Chrome DevTools协议远程截屏;四、用Window.print()配合打印CSS导出PDF。 如果您希望在网页中直接截取当前页面或指定区域…

    2025年12月23日
    000
  • 避免HTML硬编码到JS中的方法是什么_避免HTML硬编码到JS中的方法实践

    使用模板字符串、外部模板、模板引擎或前端框架可避免JS中硬编码HTML,提升代码可维护性与安全性。 避免将HTML硬编码到JavaScript中,能提升代码的可维护性、可读性和安全性。直接在JS里拼接HTML字符串虽然简单,但容易出错,也难以调试和扩展。以下是几种实用的方法来解决这个问题。 使用模板…

    2025年12月23日
    000
  • 如何添加一个按钮来打印一个HTML页面?

    在 HTML 网页上添加“打印”按钮,单击该按钮后,将打印整个网页。这是在网页中添加的相当简单的功能,可以使用一些 HTML 元素和纯 JavaScript 来添加。 因此,让我们讨论一下这样做的方法。 方法 首先,在 HTML dom 中添加 标签。 将其 type 属性分配给“button”并为…

    2025年12月21日
    000
  • JavaScript中的尾调用优化与递归_javascript性能

    尾调用优化通过重用栈帧避免递归时的栈溢出。当函数最后一步调用自身且返回其结果时,如阶乘函数factorial(n, acc)在n≤1时返回acc,否则递归调用factorial(n-1, n*acc),此时可进行优化,但JavaScript中仅部分引擎支持。 尾调用优化(Tail Call Opti…

    2025年12月21日
    100
  • 如何实现JavaScript中的递归函数优化?

    优化JavaScript递归函数需通过记忆化避免重复计算,并将递归转换为迭代以防止栈溢出,从而提升性能与健壮性。 优化JavaScript中的递归函数,核心在于两点:避免重复计算(通过缓存)和防止栈溢出(通过迭代化或尾调用优化)。这不仅仅是提升性能,更是在面对复杂算法时确保代码健壮性的关键。 解决方…

    2025年12月20日
    000
  • 怎么使用JavaScript操作浏览器打印功能?

    答案是利用window.print()结合CSS @media print实现局部打印,通过隐藏非打印元素、调整布局样式,并注意浏览器兼容性问题,确保打印内容清晰完整且用户体验良好。 JavaScript操作浏览器打印功能,核心是利用 window.print() 方法,它会直接触发浏览器的打印对话…

    2025年12月20日
    000
  • 如何理解递归?递归在数据结构中的应用

    递归通过函数调用自身将问题分解为更小的子问题,直至达到可直接求解的基本情况。核心包含两部分:基本情况(Base Case)确保递归终止,防止无限循环;递归步骤(Recursive Step)将原问题拆解为更小的同类子问题。以阶乘为例,n == 0 为基本情况,n * factorial(n-1) 为…

    2025年12月20日
    000
  • DOM中如何操作打印功能?

    要避免打印时出现空白页,需检查并调整css样式中的margin、padding及页面尺寸。其次,使用page-break-after或page-break-before属性控制分页。此外,限制打印区域宽度、避免绝对定位、动态调整页面高度,并检查打印机设置是否正确。具体步骤如下:1. 检查并减小过大的…

    2025年12月20日 好文分享
    000
  • js如何检测打印机 网页打印状态检测方法汇总

    检测javascript中打印机状态没有直接通用api,但可通过曲线策略实现。1.window.print()事件监听只能确认对话框关闭,无法区分成功打印或取消;2.matchmedia查询可检测进入或离开打印预览状态,但无法确认实际打印行为;3.后端配合通过发送打印任务并轮询或websocket查…

    2025年12月20日 好文分享
    000
  • c++中如何使用递归遍历数组_c++递归遍历数组技巧

    递归遍历数组通过分解问题实现,先处理当前元素再递归下一个;2. 反向遍历则利用回溯,在递归调用后处理当前元素,实现从末尾开始输出。 在C++中,递归遍历数组是一种常见的编程技巧,尤其适合理解递归思想和处理分治类问题。虽然循环更直观,但递归能帮助我们以更简洁、函数式的方式处理数据结构。 1. 递归遍历…

    2025年12月19日
    000
  • c++中如何使用递归实现阶乘_c++递归阶乘实现方法

    递归实现阶乘需定义终止条件和递归调用,C++中factorial(n)函数通过n==0或1时返回1、否则返回n*factorial(n-1)计算阶乘,代码简洁但受限于整型范围与栈深度。 在C++中,递归是一种函数调用自身的方法。实现阶乘时,递归非常直观:n的阶乘等于n乘以(n-1)的阶乘,直到n为0…

    2025年12月19日
    000
  • C语言算法问答集:深入了解递归和回溯

    递归:一种函数自我调用的技术,针对较小的问题不断调用自身,直到满足终止条件为止。回溯:一种试错技术,从一个解或状态开始,逐步探索各种可能结果,直到找到或耗尽所有可能性。 C语言算法问答集:深入了解递归和回溯 递归 什么是递归? 立即学习“C语言免费学习笔记(深入)”; 递归是一种函数自我调用的技术。…

    2025年12月18日
    000
  • C++ 函数的时空之旅:深入递归与尾递归

    问题: c++++ 中的尾递归与普通递归有何区别?详情:普通递归: 函数调用自身,并可能存在多个调用堆叠。空间复杂度取决于递归深度。尾递归: 函数调用自身是函数执行的最后一步。编译器可以优化尾递归调用,将其转换为迭代循环,消除函数调用开销。 C++ 函数的时空之旅:深入递归与尾递归 在 C++ 中,…

    2025年12月18日
    000
  • C++ 函数的递归调用有什么需要注意的?

    c++++ 递归函数需注意:确保退出条件:防止无限递归和栈溢出。限制递归深度:避免栈溢出。避免尾递归:减少栈帧,预防栈溢出。 C++ 函数递归调用的注意事项 简介递归函数是能够调用自身的一个函数。在 C++ 中使用递归调用时需要格外小心,否则会导致栈溢出错误。 注意事项 立即学习“C++免费学习笔记…

    2025年12月18日
    100
  • C++ 函数递归详解:递归在编程竞赛中的应用

    递归是一种函数自调用技术,它基于更小的实例解决问题,然后组合结果解决原始问题。其优点包括代码简洁和解决自相似问题的能力,缺点是可能导致堆栈溢出。斐波那契数列等问题可以通过递归函数轻松计算。在编程竞赛中,递归可用于求解迷宫、查找最短路径和排序树形结构等问题。例如,汉诺塔问题可以使用递归函数求解,它涉及…

    2025年12月18日
    000
  • C++ 函数递归详解:递归终止条件的制定

    c++++函数递归中,递归终止条件必不可少,防止无限递归。制定递归终止条件的关键在于:识别停止点,例如达到特定数字时停止;验证小规模情况,例如阶乘在输入为0时停止;防止无限循环,确保条件独立于输入值。 C++ 函数递归详解:递归终止条件的制定 递归是一种允许函数调用自身的编程技术。它在问题可以分解为…

    2025年12月18日
    000
  • C++ 函数递归详解:递归调用的形式和实现

    递归是函数自身调用的一种编程技术,在 c++++ 中有两种常见形式:直接递归和间接递归。要实现递归,函数必须满足基线条件和递归调用。实战案例中,利用递归计算阶乘,其基线条件是 n 为 0 时返回 1,递归调用是函数乘以 n 并调用自身,递减 n。 C++ 函数递归详解 理解递归 递归是一种函数调用自…

    2025年12月18日
    000
  • 递归在 C++ 中的实战应用:图像处理和数据分析案例

    递归在 c++++ 中广泛应用,包括:图像处理:图像缩小通过递归将图像划分为更小的部分并重复调用缩小操作。数据分析:归并排序:通过递归将数组拆分为更小的子数组并合并已排序的子数组来实现。二分查找:通过递归在有序数组中找到目标元素。 递归在 C++ 中的实战应用:图像处理和数据分析案例 递归是一种强大…

    2025年12月18日
    000
  • C++ 递归与尾递归:性能差异和优化实践探讨

    c++++ 中标准递归会产生栈空间和时间开销,而尾递归不会。优化实践包括识别尾递归、转化为尾递归和启用编译器支持。尾递归比标准递归性能更高,因为它避免了创建额外活动记录和相关的开销。 C++ 递归与尾递归:性能差异和优化实践探讨 递归是一种强大的编程技术,它允许函数调用自身。然而,在 C++ 中,标…

    2025年12月18日
    000

发表回复

登录后才能评论
关注微信