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

การนำ atoi() แบบเรียกซ้ำมาใช้งานใน C++

ภาพรวม

ได้รับสตริงที่มีตัวเลข เป้าหมายคือหาตัวเลขเทียบเท่าด้วยวิธี atoi() แบบเรียกซ้ำ (Recursive) int atoi(const char *str) แปลงสตริงเป็นจำนวนเต็ม

ตัวอย่าง

อินพุต − Str[] = "58325"

เอาต์พุต − The Equivalent decimal is: 58325

คำอธิบาย − สตริงมีตัวเลขเทียบเท่า 58325

อินพุต − Str[] = "00010"

เอาต์พุต − The Equivalent decimal is: 10

คำอธิบาย − สตริงมีตัวเลขเทียบเท่า 10

แนวทางการแก้ปัญหา

ใช้ฟังก์ชันเรียกซ้ำ recurAtoi() รับสตริงและความยาว สำหรับแต่ละตัวอักษร แปลงเป็นค่าทศนิยม คูณ 10 บวกผลลัพธ์ก่อนหน้า

  • รับสตริง Str[]
  • คำนวณความยาว strlen(Str)
  • ฟังก์ชัน recurAtoi(char *str, int len) คืนค่าตัวเลข
  • Base case: หาก len == 1 คืน *str - '0'
  • Recursive: temp = 10 * recurAtoi(str, len-1) แล้ว temp += str[len-1] - '0'
  • คืนค่า temp
  • พิมพ์ผลลัพธ์

ตัวอย่างโค้ด C++

#include <bits/stdc++.h> 
using namespace std; 

int recurAtoi(char *str, int len){ 
    if (len == 1){ 
        return *str - '0'; 
    } 
    int temp = 10 * recurAtoi(str, len - 1); 
    temp = temp + str[len - 1] - '0'; 
    return (temp); 
} 

int main(void){ 
    char Str[] = "58325"; 
    int length = strlen(Str); 
    cout << "Equivalent decimal :" << recurAtoi(Str, length); 
    return 0; 
}

ผลลัพธ์

Equivalent decimal: 58325