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不是。当我点击“发布你的答案”时,没有看到答案。不用担心,我也这么认为。(顺便说一句,否决票不是我投的。)谢谢你们两位:)