C++中atoi()的遞迴實現


給定一個包含數字的字串。目標是使用遞迴atoi()方法找到等效數字。int atoi(const char *str) 將字串引數str轉換為整數(int型別)。

示例:

輸入 − Str[] = "58325"

輸出 − 等效十進位制數為:58325

說明 − 字串包含等效數字58325

輸入 − Str[] = "00010"

輸出 − 等效十進位制數為:10

說明 − 字串包含等效數字10。

下面程式中使用的方法如下:

在這種方法中,我們使用遞迴函式recurAtoi(),它接收輸入字串及其長度,併為每個字元將其轉換為十進位制數並乘以10。將其新增到之前的結果中。

  • 獲取包含數字的輸入字串Str[]。

  • 使用strlen(Str)計算其長度。

  • 函式recurAtoi(char *str, int len)接收輸入並返回使用遞迴atoi()功能計算的數字。

  • 如果長度為1,則返回數字*str -’0’。

  • 令temp=10*recurAtoi(str,len-1)。

  • 並將temp設定為temp+str[len-1]-'0'。

  • 最後返回temp。

  • 列印結果。

示例

#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

更新於:2021年11月2日

1K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.