使用递归的回文函数

Palindrome function using recursion

本文关键字:回文 函数 递归      更新时间:2023-10-16

我看不出我在这里出了问题的地方,它适用于某些回文,但不适用于其他回文。

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

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);
}