เราได้รับสตริงที่มีตัวเลข เป้าหมายคือการหาจำนวนที่เท่ากันโดยใช้วิธีการแบบเรียกซ้ำ atoi() int atoi(const char *str) แปลงสตริงอาร์กิวเมนต์ str เป็นจำนวนเต็ม (พิมพ์ int)
ตัวอย่าง-:
ป้อนข้อมูล − Str[] ="58325"
ผลผลิต − ทศนิยมเทียบเท่าคือ :58325
คำอธิบาย − สตริงมีตัวเลขเทียบเท่า 58325
ป้อนข้อมูล − Str[] ="00010"
ผลผลิต − ทศนิยมเทียบเท่าคือ :1
คำอธิบาย − สตริงมีตัวเลขเทียบเท่า 10
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
ในแนวทางนี้ เราใช้ฟังก์ชันเรียกซ้ำ recurAtoi() ซึ่งรับสตริงอินพุตและความยาว และสำหรับอักขระแต่ละตัวแปลงให้เป็นทศนิยมแล้วคูณด้วย 10 เพิ่มผลลัพธ์ก่อนหน้าลงไป
-
นำสตริงอินพุต Str[] ที่มีตัวเลข
-
คำนวณความยาวโดยใช้ strlen(Str)
-
ฟังก์ชัน recurAtoi(char *str, int len) รับอินพุตและส่งกลับตัวเลขที่คำนวณโดยใช้ฟังก์ชัน recursive atoi()
-
หากความยาวเท่ากับ 1 ให้ส่งคืนหลัก *str -’0’.
-
ใช้ temp=10*recurAtoi(str,len-1)
-
และตั้งค่า temp=temp+str[len-1]-'0'.
-
เมื่อสิ้นสุดอุณหภูมิกลับ
-
พิมพ์ผล
ตัวอย่าง
#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