需要您的帮助来寻找回文。
我回文的问题是:当我写一个句子时,测试执行得不好,因为我的程序只检查第一个字母和最后一个字母所以这会导致问题 句子的第一个字母值得最后一个字母,但第二个字母不值得最后一个字母。
如果你能帮我解决这个问题,我将不胜感激 谢谢。
我的代码-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char recursive_palindrome(const char st[], int first, int last )
{
if(st[first] != st[last])
{
return(0);
}
if(last-first<=1)
{
return(1);
return(recursive_palindrome(st, first+1,last+1));
}
}
int main()
{
char st[255];
printf("enter a string: \n");
gets(st);
if ( recursive_palindrome(st,0,strlen(st)-1))
{
puts("yes\n");
}
else
{
puts("No");
}
}
最佳答案
if(last-first<=1)
{
return(1);
return(recursive_palindrome(st, first+1,last+1));
}
应该修改成
if(last-first<=1)
{
return(1);
}
return(recursive_palindrome(st, first+1,last-1));
请注意,如果 st[first] == st[last] && last-first > 1
,您的原始 recursive_palindrome()
不会到达任何返回语句。编译器应该对此发出警告。
关于c - 需要你的帮助来找到我的回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952402/