使用递归的回文函数
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);
}
我看不出哪里出了问题,它适用于某些回文,但不适用于其他回文。
基本上程序接受一个单词,单词的长度,然后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);
}