回文数字用递归写 c语言实现
时间: 2024-01-29 18:02:52 浏览: 27
好的,回文数字的递归实现如下:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
bool is_palindrome(char *num_str) {
/*
判断一个数字是否为回文数字
*/
int len = strlen(num_str);
if (len <= 1) {
// 如果字符串长度为1或0,则为回文数字
return true;
} else {
// 判断第一位和最后一位是否相同
if (num_str[0] == num_str[len-1]) {
// 如果相同,则递归判断中间部分是否为回文数字
num_str[len-1] = '\0'; // 将最后一位设置为字符串结束符
return is_palindrome(num_str+1);
} else {
// 如果不同,则不是回文数字
return false;
}
}
}
int main() {
char num_str[100];
printf("请输入一个数字:");
scanf("%s", num_str);
if (is_palindrome(num_str)) {
printf("是回文数字!\n");
} else {
printf("不是回文数字!\n");
}
return 0;
}
```
以上代码中,首先将数字转换为字符串,然后判断字符串的长度,如果长度为1或0,则为回文数字;否则,判断第一位和最后一位是否相同,如果相同,则递归判断中间部分是否为回文数字,否则,不是回文数字。注意,在递归调用时,需要将最后一位设置为字符串结束符,并将指针指向下一位。