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