编辑代码

#include <stdio.h>

// 回文字符串递归实现
int isPalindromeChar0(char *str, int length) {
	if (length <= 1) return 1;
	
	if (str[0] == str[length-1])
		return isPalindromeChar0(str+1, length-2);
		
	return 0;
}

// 回文字符串非递归实现
int isPalindromeChar1(char *str) {
	int length=0;
	while (str[length++]);
	if (length <= 1) return 1;
	int i;
	for (i=0,length--; i<length>>1; ++i)
		if (str[i] != str[length-i-1])
			break;
	return i>=length>>1;
}



int main() {
	printf("%d\n", isPalindromeChar0("1", 1));
	printf("%d\n", isPalindromeChar0("121", 3));
	printf("%d\n", isPalindromeChar0("1221", 4));
	printf("%d\n", isPalindromeChar0("1234", 4));
	printf("-----\n");
	printf("%d\n", isPalindromeChar1("1"));
	printf("%d\n", isPalindromeChar1("121"));
	printf("%d\n", isPalindromeChar1("1221"));
	printf("%d\n", isPalindromeChar1("1234"));
	return 0;
}