回文是指一個字符串從前往后讀和從后往前讀都相同的字符串,比如"level"、"radar"等。在C語言中可以通過遞歸和非遞歸兩種方式來判斷一個字符串是否為回文。
下面是兩種方法的比較:
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[]) {
int len = strlen(str);
for(int i = 0; i < len/2; i++) {
if(str[i] != str[len-i-1]) {
return 0;
}
}
return 1;
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
if(isPalindrome(str)) {
printf("The string is a palindrome.\n");
} else {
printf("The string is not a palindrome.\n");
}
return 0;
}
#include <stdio.h>
#include <string.h>
int isPalindrome(char str[], int start, int end) {
if(start >= end) {
return 1;
}
if(str[start] != str[end]) {
return 0;
}
return isPalindrome(str, start+1, end-1);
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
if(isPalindrome(str, 0, strlen(str)-1)) {
printf("The string is a palindrome.\n");
} else {
printf("The string is not a palindrome.\n");
}
return 0;
}
遞歸解法相對于非遞歸解法更加簡潔,但是在處理大量數據時可能會導致棧溢出。非遞歸解法則更容易理解和實現,適用于大部分情況。在實際應用中,可以根據具體情況選擇使用哪種方法。