我试图弄清楚如何将我制作的用于检查传递的字符串的函数转换为仅包含字母(小写或大写)并且仅将这些标点符号()+-* / ....转换为有效的递归函数,可能通过尾递归。这是我的代码:
/*typedef std::string StringElem;*/
bool verify_input_str(StringElem str_para) {
for (int x = 0; x < str_para.size(); ++x) {
if (!(std::isalpha(str_para[x])) && (str_para[x] != '*')&& (str_para[x] != '/')
&& (str_para[x] != '+') && (str_para[x] != '-') && (str_para[x] != ')')
&& (str_para[x] != '(')) {
return 0;
}
}
return 1;
}
谁能给我一个提示,我将不胜感激。谢谢,期待您的建议。
答案 0 :(得分:4)
由于尾部递归要求在递归调用之后不执行任何计算,因此这里的方法非常简单:
pos
中当前位置StringElement
的签名开始pos+1
调用函数本身的结果。注意:我假设您正在通过尾部递归进行学习,因为否则基于循环的实现将是一个很好的方法。