c++ - 递归回文测试

标签 c++ recursion character-arrays

我有一个 bool pal(char str[], int length) 的原型(prototype)限制,我需要测试用户输入的字符串是否是回文。我的代码是:

bool pal(char str[], int length)
{
    if(*str == str[length - 1])
    {
        pal(str+1, length-1);
    }
    else
    {
        return false
    }
    return true;
}

但它似乎只是在测试第一个字符是否与最后一个字符相同。我认为这是因为我的数组(起点)没有递增,但我不确定为什么。

最佳答案

我想这可能是由于对 if 语句的一些根深蒂固的厌恶,但如果由我来决定,我想我会写这样的代码:

bool pal(char *str, size_t len) { 
    return len <2 || (str[0] == str[len-1] && pal(str+1, len-2));
}

关于c++ - 递归回文测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14681739/

相关文章:

c++ - 等同于 "typename",表示从属名称确实是 'template template parameter'

sorting - CMD 命令以递归方式列出具有排序顺序的文件夹中的所有文件,而不考虑层次结构中的位置?

python - 如何避免python类方法中的无限递归

java - Java 中字节数组的 char 操作

c++ - GCC 警告初始化顺序与声明顺序不匹配

c++ - 使用 ASCII 代码加密消息

c++ - 使用可变目录在 C++ 中复制文件

javascript - 理解Javascript中的递归函数与逻辑运算符相结合

c - 段错误字符** C

c - 使用花括号初始化 C char 数组,可以省略空字节 '\0' 吗?