这里的基本情况是什么?这是功能齐全的,但它是如何工作的?
int isPali(char *s, int l, int r)
{
return ((l == r) || (s[l] == s[r] && isPali(s, l+1, r-1)));
}
int main()
{
char str[100];
scanf("%s", str);
if(isPali(str, 0, strlen(str)-1))
printf("Palindromen");
else
printf("Not palindromen");
}
它在函数的唯一行中。 在计算表达式时记住短路逻辑。 或可以更改为
if (l == r)
return True;
else
return (s[l] == s[r] && isPali(s, l+1, r-1));
当然,您现在可以将短路应用于其他部分:
else
if s[l] == s[r]
return isPali(s, l+1, r-1);
else
return False;