Computer >> Máy Tính >  >> Lập trình >> C ++

Thực thi đệ quy atoi () trong C ++

Chúng tôi được cung cấp một chuỗi chứa một số. Mục đích là để tìm số tương đương bằng phương thức đệ quy atoi (). int atoi (const char * str) chuyển đổi đối số chuỗi str thành một số nguyên (kiểu int).

Ví dụ-:

Đầu vào - Str [] ="58325"

Đầu ra - Số thập phân tương đương là:58325

Giải thích - Chuỗi chứa số tương đương 58325

Đầu vào - Str [] ="00010"

Đầu ra - Số thập phân tương đương là:1

Giải thích - Chuỗi chứa số tương đương 10.

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

Trong cách tiếp cận này, chúng tôi đang sử dụng hàm đệ quy recursAtoi () lấy chuỗi đầu vào và độ dài của nó và đối với mỗi ký tự, chuyển đổi nó thành số thập phân và nhân nó với 10. Thêm các kết quả trước đó vào nó.

  • Lấy chuỗi đầu vào Str [] chứa một số.

  • Tính độ dài của nó bằng cách sử dụng strlen (Str).

  • Hàm recursAtoi (char * str, int len) nhận đầu vào và trả về số được tính bằng cách sử dụng hàm atoi () đệ quy.

  • Nếu độ dài là 1 chữ số trả về * str -’0 ’.

  • Lấy temp =10 * recAtoi (str, len-1).

  • Và đặt temp =temp + str [len-1] - '0'.

  • Vào cuối thời gian trả lại nhiệt độ.

  • In kết quả.

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau

Equivalent decimal : 58325