0

我有以下代码,它接受一个字符串(数字)并将其转换为一个整数值。但是整数输出是相反的。例如,如果您输入 5999,您将得到 9995 作为回报。我做错了什么?

int stringToInt(string myString, int m) {
    if (m == ((int)myString.length()-1))
        return (myString[m]-48);
    else
        return (10*(stringToInt(myString, m+1)) + (myString[m]-48));
}
4

1 回答 1

2

因为在数字表示法中,数字顺序从左到右递减,因此需要从字符串末尾(最低位数字)开始递归。您可以给出初始masmyString.size()-1并以相反的方式进行:

int stringToInt(string myString, int m) {
if (m == 0)
    return (myString[m]-48);
else
    return (10*(stringToInt(myString, m-1)) + (myString[m]-48));
}
于 2013-04-19T13:09:07.020 回答