递归程序打印所有小于 N 的数字,这些数字仅在 C++ 中由数字 1 或 3 组成
我们得到一个整数变量作为N存储正整数类型值。任务是递归打印所有小于给定值N且具有数字1、3或两者组合的数字。
让我们看看这个的各种输入输出场景-
输入 -intnum=40
输出 -打印所有小于N且仅由数字1或3组成的数字的递归程序是:3331131131
说明 -我们给出了一个正整数值,如40存储在变量num中。现在,我们将递归地找出所有包含数字1、3或两者的数字,并且那些小于40的数字是1、3、11、13、31、33
输入 -intnum=5
输出 -打印所有小于N且仅由数字1或3组成的数字的递归程序是:31
说明 -我们给出了一个正整数值,如40存储在变量num中。现在,我们将递归地找出所有包含数字1、3或两者的数字,并且那些小于5的数字是1和3。
输入 -intnum=1
输出 -错误输入
说明 -我们给定一个正整数值作为1存储在变量num中。现在,我们将递归找出所有包含数字1、3或两者的数字,并且那些小于1的数字是0,因为唯一小于1的正整数是0,因此,输出是错误的输入。
下面程序中使用的方法如下
输入一个整数变量作为num。通过Recursive_Numbers(num)将num作为参数传递给函数,将其传递给函数。
函数内部Recursive_Numbers(num)
将变量声明为bool类型的检查并将其设置为1。
检查IFnum大于0,然后启动WHILEtemp大于0并检查为1。将数字设置为temp%10。
检查IF数字不等于1AND数字不等于3然后将检查设置为0。设置temp=temp/10。
检查IFcheck为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