这个递归函数的基本情况是什么?它实际上是如何工作的



这里的基本情况是什么?这是功能齐全的,但它是如何工作的?

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;

最新更新