使用递归函数在Papindrome上进行测试 C

我试图编写一个程序来检查字符串,无论是一个回文,还是我总是得到结果,因为它不是。 我的代码有什么问题?


#include <stdio.h>
#include <string.h>

int is_palindrome/int start, int end, char *str/
{
if /str[start] != str[end]/
return 0;
else if /start == end/
return 1;
else
return is_palindrome/++start, --end, str/;

return 0;

}
int main//
{
char str[20];
int length,start=0,end=length-1;
int result;
printf/"Enter the String.\n"/;
fgets/ str, sizeof/ str /, stdin /;
length = strlen/str/;

if/is_palindrome/start,end,str//
printf/"It's a palindrome!\n"/;
else
printf/"It's not a palindrome! \n"/;
return 0;
}


</string.h></stdio.h>
已邀请:

小姐请别说爱

赞同来自:

什么时候会发生什么
++start


--end

互相传递?


else if /start == end/


必须是
>=

.

诸葛浮云

赞同来自:

你有两个主要问题,

1/

你初始化
end

通过
length

没有先前的初始化
length

:


length = strlen/str/;
/* initialize end here */


2/

你不考虑你在线结束时获得的新线
fgets

:


end = length - 2; /* don't include the newline */

莫问

赞同来自:

在这个功能中
is_palindrome//

你需要检查一下,否则它将不适用于palindrome这个词的偶数数值


if/start>end/
return 1;

快网

赞同来自:

在一个字符串s。
if/start==end/

有一个逻辑错误。

这是由值的最后一次递归挑战引起的 last 和 end 总是相同的,也就是说,两者都将在阵列的中心。 因此,功能
is_palindrome//

总会回来
1

, 输出永远是
It's a palindrome!

要回复问题请先登录注册