Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมแบบเรียกซ้ำเพื่อพิมพ์ตัวเลขทั้งหมดที่น้อยกว่า N ซึ่งประกอบด้วยตัวเลข 1 หรือ 3 เฉพาะในภาษา C++


เราได้รับตัวแปรจำนวนเต็มเนื่องจาก 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)

    • ประกาศตัวแปรเป็นเช็คประเภทบูลและตั้งค่าด้วย 1

    • ตรวจสอบ IF num มากกว่า 0 แล้วเริ่ม WHILE temp มากกว่า 0 และตรวจสอบเป็น 1 ตั้งค่าหลักเป็น temp % 10

    • ตรวจสอบว่า IF หลักไม่เท่ากับ 1 และ digit ไม่เท่ากับ 3 แล้วตั้งค่าตรวจสอบเป็น 0 Set temp =temp / 10.

    • ตรวจสอบว่าเช็คเป็น 1 แล้วพิมพ์จำนวน

    • เรียกซ้ำไปยังฟังก์ชัน 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<<"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 31
13 11 3 1