gpt4 book ai didi

c++ - 使用递归查找回文字符串?

转载 作者:行者123 更新时间:2023-11-28 05:14:34 25 4
gpt4 key购买 nike

bool palindrome(char input[], int siz, int start){
// siz = size of the array ,start =starting point of the array ie 0
if(input[start] == '\0') {
return true;
} else if(input[start] == input[siz - start - 1]) {
return true;
palindrome(input, siz, start + 1);
} else {
return false;
}
}

我正在尝试使用此递归函数查找回文字符串,但代码将术语 alia 输出为回文,就好像它只检查字符串的第一个和最后一个字母表一样。我采用的基本情况是,当在数组的开头找到 null 元素时,它返回 true 。否则,如果第一个和最后一个元素相等,则返回 true 并通过 palindrome(input,siz,start+1) 递归调用自身,否则返回 false。

最佳答案

你的问题是你在再次执行之前退出了函数。现在你有

else if(input[start]==input[siz-start-1])
{
return true;
palindrome(input,siz,start+1);
}

相反,尝试

else if(input[start]==input[siz-start-1])
{
palindrome(input,siz,start+1);
}

然后在函数的末尾添加

return true;

编辑:

我测试了它,它对我来说工作得很好,这里是完整的代码:

#include <iostream>
bool palindrome(char input[],int siz,int start){
//siz =size of the array ,start =starting point of the array ie 0
if(input[start]=='\0')
{
return true;
}
else if(input[start]==input[siz-start-1])
{
palindrome(input,siz,start+1);
}
else
{
return false;
}
return true;
}
int main()
{
char racecar[] = "racecar";
if (palindrome(racecar, 7, 0))
{
std::cout << "It's a palindrome!" << std::endl;
}
else
{
std::cout << "It's not a palindrome." << std::endl;
}
char abba[] = "abba";
if (palindrome(abba, 4, 0))
{
std::cout << "It's a palindrome!" << std::endl;
}
else
{
std::cout << "It's not a palindrome." << std::endl;
}
return 0;
}

关于c++ - 使用递归查找回文字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42917992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com