C++ 回文递归版本

C++ 回文递归版本,c++,recursion,C++,Recursion,我已经编写了一个递归函数来确定一个单词是否是回文的,但我不明白为什么这个函数在递归结束时返回一个真值,而在递归结束前它会输出一个假值 这是我的密码: #include <iostream> #include <string> using namespace std; bool palindrome_recursive(string word){ string::size_type wordLength = word.length(); if(wordL

我已经编写了一个递归函数来确定一个单词是否是回文的,但我不明白为什么这个函数在递归结束时返回一个真值,而在递归结束前它会输出一个假值

这是我的密码:

#include <iostream>
#include <string>

using namespace std;
bool palindrome_recursive(string word){

    string::size_type wordLength = word.length();
    if(wordLength == 0){
        cout << "TRUE" <<endl;
        return true;
    }
    if(word.at(0) != word.at(wordLength-1)){
        cout << "FALSE" <<endl;
        return false;
    }
    word.erase(wordLength-1);
    word.erase(0,1);
    cout << word << endl;
    palindrome_recursive(word);
    return true;

}


int main()
{
    std::cout << "Enter a word: ";
    std::string word;
    std::cin >> word;

    if(palindrome_recursive(word)){
        std::cout << word << " is a palindrome" << std::endl;
    } else {
        std::cout << word << " is not a palindrome" << std::endl;
    }
}  
#包括
#包括
使用名称空间std;
布尔回文递归(字符串字){
字符串::size_type wordLength=word.length();
如果(字长==0){

cout因为返回的是
true
,而不是递归调用的结果。将其更改为:

return palindrome_recursive(word);

在这里,您将返回
true
,而不管
回文_recursive
返回什么

palindrome_recursive(word);
return true;
将其更改为:

return palindrome_recursive(word);

请编辑您的问题,以包含使此代码可编译所需的所有头文件。谢谢Neil,我这样做了。这与我的回答有什么不同D@MaxVollmer不是。当我点击“发布你的答案”时,没有看到答案。不用担心,我也这么认为。(顺便说一句,否决票不是我投的。)谢谢你们两位:)