如何使O(n)的函数检查字母(上和下)和()+-*/到尾递归?

How to make function of O(n) that checks for letters (upper& lower) & ()+-*/ to a tail recursion?

本文关键字:尾递归 何使 函数 检查      更新时间:2023-10-16

我正在尝试弄清楚我如何转换我制作的函数,该函数仅包含字母(较低的情况或资本(,并且仅这些标点符号(( - */....有效的递归功能,可能是通过尾部递归。这是我的代码:

/*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;
}

任何人都可以给我一个提示,我真的很感激。谢谢,期待您的建议。

由于尾部递归要求在递归调用后没有进行计算,因此这里的方法非常简单:

  • 从签名开始,该签名包括当前位置pos中的StringElement
  • 首先检查边界条件;如果字符串为空,请返回成功
  • 接下来,检查当前字符;如果是无效的,请返回失败
  • 最后,返回使用pos+1调用功能本身的结果。

注意:我假设您正在通过尾随的学习练习进行工作,因为否则基于循环的实现将是一种非常好的方法。