思路:就是对137递归;然后对7,3,0递归;递归出口就是0,2
注意点:如果对1递归,输出的是"2",而不是"2(1)"

import java.math.BigInteger;
import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            System.out.println(getNumber(n + ""));
        }
    }
    public static String getNumber(String str){

        //递归出口
        if(str.equals("0"))
            return "0";
        if(str.equals("2"))
            return "2";

        //将数转化为二进制数
        BigInteger bigInteger = new BigInteger(str, 10);
        str = bigInteger.toString(2);

        //找二进制数的对应数:7,3,0(又如7转化为二进制数的对应数为:2,1,0)
        int j = 0;
        String result = "";//结果
        for(int i = str.length() - 1; i >= 0; i--){//i代表7,3,0
            if(str.charAt(j) == '1'){
                if(str.length() - 2 == j) {//如果对应数为是1,输出"+2",而不是"+2(1)"
                    result = result + "+2";
                    j++;
                }
                else {
                    result = result + "+2(" + getNumber(i + "") + ")";
                    j++;
                }
            }
            else 
                j++;
        }

        result = result.substring(1, result.length());//去掉多的那个"+"号
        return result;
    }
}