public int getRepresentByUniqueTwo(int num) {
        //找到num最多可以用多少个二进制数表示
        int k = 0, cur = 1;
        while (num >= cur << k) {
            k++;
        }
        return getRepresentByUniqueTwo(num, cur << (k - 1));
    }

    private int getRepresentByUniqueTwo(int num, int cur) {
        if (num < 0) return 0;
        if (num == 0) return 1;
        if (cur == 0) return 0;
        return getRepresentByUniqueTwo(num, cur >> 1) +
                getRepresentByUniqueTwo(num - cur, cur >> 1) +
                getRepresentByUniqueTwo(num - cur * 2, cur >> 1);
    }
@个人练习生,喜欢喊6,摸鱼,offer,求带挖洞~  不知道这样写对不对