如何使O(n)的函数检查字母(上和下)和()+-*/到尾递归?
How to make function of O(n) that checks for letters (upper& lower) & ()+-*/ to a tail recursion?
我正在尝试弄清楚我如何转换我制作的函数,该函数仅包含字母(较低的情况或资本(,并且仅这些标点符号(( - */....有效的递归功能,可能是通过尾部递归。这是我的代码:
/*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
调用功能本身的结果。
注意:我假设您正在通过尾随的学习练习进行工作,因为否则基于循环的实现将是一种非常好的方法。
相关文章:
- 如何使此递归函数从给定的起始位置返回最小的整数?
- 将公共递归转换为尾递归,因为大型输入的堆栈溢出
- 我在 C++ 中创建了一个函数来递归反转字符串,但是之后如何使功能打印一个 endl?
- 尾递归函数未被 g++ 优化
- 尾递归,带有通过引用传递的向量
- 如何使O(n)的函数检查字母(上和下)和()+-*/到尾递归?
- 是否有一种方法可以使此C 14递归模板在C 17中短
- 使用C++的递归线程处理会使资源暂时不可用
- 带有对象的尾递归
- 在turbo c++中,可以将一个普通递归函数转换为尾递归函数来对其进行优化
- 为什么当递归函数结果相乘时,g++ 仍然优化尾递归
- 在 C++ 中使用尾递归函数计算列表的总和
- 叮当无限尾递归优化
- constexpr函数求值可以做尾递归优化吗?
- 尾递归函数,用于计算数组中大于平均值的所有数字
- 将递归函数转换为尾递归函数
- 为什么下面的函数没有使用 Clang 生成尾递归?
- 已知的最有效的尾递归素数验证函数是什么?
- 在c++中做尾递归
- 模板元编程的尾递归性能