回文数字用递归写一个函数,不能转换为字符数组c语言
时间: 2024-03-17 20:47:26 浏览: 18
好的,以下是一个使用递归实现回文数字判断的函数:
```c
int is_palindrome(int num, int* reverse_num) {
if (num == 0) {
*reverse_num = 0;
return 1;
} else {
int digit = num % 10;
int temp = *reverse_num * 10 + digit;
if (is_palindrome(num / 10, &temp)) {
*reverse_num = temp;
return (temp == num);
} else {
return 0;
}
}
}
```
这个函数接受一个整数 `num` 和一个指向整数的指针 `reverse_num`,并返回一个布尔值表示 `num` 是否是回文数字。在函数中,我们首先判断 `num` 是否为 0,如果是,则将 `reverse_num` 设为 0,并返回 1(因为 0 是回文数字)。如果 `num` 不为 0,我们先通过递归调用 `is_palindrome` 函数来判断 `num` 的前一位是否也是回文数字,同时计算出 `num` 的反转数字 `temp`。最后,我们将 `temp` 赋值给 `reverse_num`,并返回 `temp == num` 表示 `num` 是否是回文数字的结果。
使用方法如下:
```c
int num = 12321;
int reverse_num;
if (is_palindrome(num, &reverse_num)) {
printf("%d is a palindrome number\n", num);
} else {
printf("%d is not a palindrome number\n", num);
}
```
输出结果为:
```
12321 is a palindrome number
```