不知道你是什么语言,所以写个伪代码:
string functionA( int num, int lastPower = 0) {
int power= 0;
int value =1;
//使value取小于num的最大的2的整数次幂
while (num >= 2 * value) {
power++;
value *= 2;
}
int leftNum = num - value;
string str = "";
if (lastPower != 0) {
for (int i = 1; i < lastPower - power; i++) {
//在上次计算出的指数后,到本次计算出的指数之间补0
str += "0";
}
}
//当前位数上写1
str += "1";
if (leftNum == 0) {
//若无剩余数值,在剩下的后几位数上补0
for( int i = 0; i < power; i++) {
str += "0";
}
return str;
}
else {
return str + functionA(leftNum, power);
}
}
经过测试,思路无误。