一种方法是先翻转当前数,然后把它和原数比较(略)
另一种是递归方法,借用一个复制数,对原数递归,使之翻转,然后配合复制数比较
package recursion;
public class Check_if_a_number_is_palindrome {
public static void main(String[] args) {
int num = 121321;
System.out.println(check(num));
num = 12321;
System.out.println(check(num));
num = 123321;
System.out.println(check(num));
}
// 一种方法是先翻转当前数,然后把它和原数比较(略)
// 另一种是递归方法
static int dupNum;
public static boolean check(int num) {
dupNum = num; // 复制一份原数
return rec(num);
}
public static boolean rec(int num) {
if(isSingleDigit(num)) {
return num == dupNum%10;
}
// 通过递归使得num:121->12->1 相当于从原数的左到右进行比较
if(!rec(num/10)){ // 之前比较已经失败了,就无需继续比较
return false;
} else {
dupNum /= 10;
return num%10 == dupNum%10; // 取原数的最后一位和递归数的最后一位进行比较
}
}
// 辅助函数:判断是否是个位数
public static boolean isSingleDigit(int num) {
if(num >= 0 && num < 10) {
return true;
} else {
return false;
}
}
}
http://www.geeksforgeeks.org/check-if-a-number-is-palindrome/