Chúng ta được cung cấp một biến số nguyên là N lưu trữ giá trị kiểu số nguyên dương. Nhiệm vụ là in đệ quy tất cả các số nhỏ hơn giá trị N cho trước có chữ số 1, 3 hoặc kết hợp của cả hai.
Hãy để chúng tôi xem các kịch bản đầu ra đầu vào khác nhau cho việc này -
Đầu vào - int num =40
Đầu ra - Chương trình đệ quy in ra tất cả các số nhỏ hơn N chỉ gồm các chữ số 1 hoặc 3 là:33 31 13 11 3 1
Giải thích - chúng tôi được cung cấp một giá trị nguyên dương là 40 được lưu trữ trong một biến num. Bây giờ, chúng ta sẽ tìm ra một cách đệ quy tất cả các số có chứa chữ số 1, 3 hoặc cả hai và những số nhỏ hơn 40 là 1, 3, 11, 13, 31, 33
Đầu vào - int num =5
Đầu ra - Chương trình đệ quy để in tất cả các số nhỏ hơn N chỉ gồm các chữ số 1 hoặc 3 là:3 1
Giải thích - chúng tôi được cung cấp một giá trị nguyên dương là 40 được lưu trữ trong một biến num. Bây giờ, chúng ta sẽ tìm ra một cách đệ quy tất cả các số có chứa chữ số 1, 3 hoặc cả hai và những số nhỏ hơn 5 là 1 và 3.
Đầu vào - int num =1
Đầu ra - Nhập sai
Giải thích - chúng tôi được cung cấp một giá trị nguyên dương là 1 được lưu trữ trong một biến num. Bây giờ, chúng ta sẽ tìm ra một cách đệ quy tất cả các số có chứa chữ số 1, 3 hoặc cả hai và những số đó nhỏ hơn 1 là 0 vì số nguyên dương duy nhất nhỏ hơn 1 là 0 do đó, đầu ra là đầu vào sai.
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Nhập một biến số nguyên dưới dạng num. Chuyển nó cho hàm Recursive_Numbers (num) bằng cách chuyển num làm tham số cho hàm.
-
Bên trong hàm Recursive_Numbers (num)
-
Khai báo một biến dưới dạng kiểm tra kiểu bool và đặt nó bằng 1.
-
Kiểm tra IF num lớn hơn 0 rồi bắt đầu WHILE nhiệt độ lớn hơn 0 VÀ kiểm tra thành 1. Đặt chữ số thành nhiệt độ% 10.
-
Kiểm tra chữ số IF không bằng 1 VÀ chữ số không bằng 3 rồi đặt kiểm tra thành 0. Đặt temp =temp / 10.
-
Kiểm tra NẾU kiểm tra là 1 rồi in số.
-
Thực hiện một cuộc gọi đệ quy tới hàm Recursive_Numbers (num - 1)
-
Ví dụ
#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; }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau
Recursive program to print all numbers less than N which consist of digits 1 or 3 only are: 33 31 13 11 3 1