使用递归的回文函数

Palindrome function using recursion

我看不出哪里出了问题,它适用于某些回文,但不适用于其他回文。

基本上程序接受一个单词,单词的长度,然后returns如果它是回文或不是回文,函数必须使用递归。

bool palindrome(char a[],int length){
 int start = *a;
 if (*a != a[length-1])
    return false;

 if (*a == a[length-1]||start<length)
    return true;

 else 
    return palindrome(a+1,length-1);

 return false;
}

有人能看出这个函数有什么问题吗?

我的鸭子说你很亲近。他说你需要忘记你试图用 start 做的任何事情,并且每次递归都会将长度减少 2,而不是 1(因为第一个字符与其匹配的最后一个字符配对)。然后他给我看了这个:

bool palindrome(const char* a, int length) {
    if(length < 2) return true;
    if(a[0] != a[length-1]) return false;
    return palindrome(a+1, length - 2);
}