递归算法首要一条就是必须要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;
    }

解决方案 »

  1.   

    用StringBuffer 和 StringBuffer.reverse() 方法
    将 每次的倒序,相加放在循环内,
    每次完了判断是否回文,
    是回文就返回数值,
    每次完成后,index++
    index >7 时返回0 就可以了。
      

  2.   

    这是递归的。执行顺序是
    Think(605);
    Think(154);
    Think(68);
    最后一次isTrue是false,所以返回0。楼主可以定义一个全局变量。