递归程序打印所有小于 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