我有以下代码,它接受一个字符串(数字)并将其转换为整数值。但相反,整数输出是相反的。例如,如果您键入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));
}
答案 0 :(得分:2)
因为在数字表示法中,数字顺序从左向右减小,所以需要在字符串的末尾(最低位数字)开始递归。您可以将初始m
设为myString.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));
}