บทนำ
เลขฐานสิบสามารถแปลงเป็นเลขฐานสองได้ โดยการหารตัวเลขด้วย 2 จนกว่าจะเหลือ 0 หรือ 1 และในแต่ละขั้นตอน ให้เก็บเศษไว้แยกต่างหาก เพื่อสร้างเลขฐานสองในลำดับย้อนกลับ
ในอัลกอริทึมนี้ เราจะใช้วิธีการแบบเรียกซ้ำ (Recursive) ซึ่งช่วยให้แก้ปัญหาได้โดยไม่ต้องใช้โครงสร้างข้อมูล Stack โดยตรง เนื่องจากการเรียกซ้ำของฟังก์ชันจะใช้ Stack ภายในเอง
อินพุตและเอาต์พุต
Input: เลขฐานสิบ 56 Output: Binary Equivalent: 111000
อัลกอริทึม
decToBin(decimal)
Input: เลขฐานสิบ
Output: สตริงเลขฐานสองเทียบเท่า
Begin
if decimal = 0 หรือ 1, then
insert decimal ลงในสตริง binary
return
decToBin(decimal / 2)
insert (decimal mod 2) ลงในสตริง binary
End
ตัวอย่างโค้ด (C++)
#include <iostream>
using namespace std;
void decToBin(int dec) {
if (dec == 1 || dec == 0) {
cout << dec; // พิมพ์ 0 หรือ 1 ตามค่า dec
return;
}
decToBin(dec/2); // หารตัวเลขด้วย 2 และหา decimal ใหม่
cout << dec % 2; // หลังจาก return ให้พิมพ์ค่าในลำดับย้อนกลับ
}
main() {
int dec;
cout << "Enter decimal number: ";
cin >> dec;
cout << "Binary Equivalent: ";
decToBin(dec);
}
ผลลัพธ์
Enter decimal number: 56 Binary Equivalent: 111000