【发布时间】:2019-02-24 15:23:27
【问题描述】:
由于某种原因,我的回文函数无法正常工作,我希望得到一些帮助:
代码
int Pal(char *s, int a, int b)
{
if (a>= b)
return 1;
if (s[a] != s[b])
return 0;
return Pal(s, ++a , --b);
}
int main()
{
char *s = "civic";
if (Pal(s , 1, strlen(s)))
printf("YES\n");
else
printf("No\n");
}
它一直打印不,我不知道为什么会这样。
【问题讨论】:
-
寻找回文不是需要递归的问题。不涉及层次结构,也没有堆栈集合。
-
不要忘记数组索引是基于零的。这意味着由 5 个元素组成的数组的索引从
0到4(含)。 -
char *s = "civic";的第一个元素是s[0],最后一个(不包括'\0')是s[4]。 -
@sturcotte06 很少有问题需要递归,但很多适合用递归解决。我认为使用递归没有任何问题。
-
@Broman
unsigned int sum(unsigned int a, unsigned int b) { if (b == 0) return a; return sum(++a, --b); };)
标签: c recursion palindrome