递归算法首要一条就是必须要if返回判断正确
你的递归返回条件不是很严密,可以稍作修改即可
static int NUM = 0;
static int returnNum = 0;
static int testInputNum ; public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
testInputNum = sc.nextInt();
Thinking(testInputNum);
System.out.println(returnNum);
} public static void Thinking(int a) {
boolean isTrue = false;
String astr = new StringBuffer(a + "").reverse().toString();
int ai = deleteZero(astr.toCharArray());
astr = astr.substring(ai);
int aa = Integer.parseInt(astr);
int newa = aa + a;
isTrue = isHuiwen(newa);
if(NUM>=7){
return;
}
if(isTrue){
returnNum = testInputNum;
}else{
NUM++;
Thinking(newa);
}
} public static Boolean isHuiwen(int a) {
String old = a + "";
char[] c = (a + "").toCharArray();
boolean isTrue = false;
String str = "";
for (int i = c.length - 1; i >= 0; i--) {
str += c[i];
}
if (str.equals(old)) {
isTrue = true;
}
return isTrue;
} public static int deleteZero(char[] a) {
int i;
for (i = 0; i < a.length; i++) {
if (a[i] != 0) {
break;
}
}
return i;
}
你的递归返回条件不是很严密,可以稍作修改即可
static int NUM = 0;
static int returnNum = 0;
static int testInputNum ; public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
testInputNum = sc.nextInt();
Thinking(testInputNum);
System.out.println(returnNum);
} public static void Thinking(int a) {
boolean isTrue = false;
String astr = new StringBuffer(a + "").reverse().toString();
int ai = deleteZero(astr.toCharArray());
astr = astr.substring(ai);
int aa = Integer.parseInt(astr);
int newa = aa + a;
isTrue = isHuiwen(newa);
if(NUM>=7){
return;
}
if(isTrue){
returnNum = testInputNum;
}else{
NUM++;
Thinking(newa);
}
} public static Boolean isHuiwen(int a) {
String old = a + "";
char[] c = (a + "").toCharArray();
boolean isTrue = false;
String str = "";
for (int i = c.length - 1; i >= 0; i--) {
str += c[i];
}
if (str.equals(old)) {
isTrue = true;
}
return isTrue;
} public static int deleteZero(char[] a) {
int i;
for (i = 0; i < a.length; i++) {
if (a[i] != 0) {
break;
}
}
return i;
}
将 每次的倒序,相加放在循环内,
每次完了判断是否回文,
是回文就返回数值,
每次完成后,index++
index >7 时返回0 就可以了。
Think(605);
Think(154);
Think(68);
最后一次isTrue是false,所以返回0。楼主可以定义一个全局变量。