对于一项家庭作业,我被要求创建一个递归函数,该函数需要一个int和一个int指针,并打印第一个int的二进制表示形式,并使指针的目的地与二进制数中的个数相同。
它适用于某些值-65和99适用-但不适用于其他大多数值(负值不在问题范围内)。我不知道为什么
void binaryPrinter(int value, int *numberOfOnes)
{
int thisbit;
//printf("Value is %i",value);
if (value <= 0) {
printf("%i",value);
return;
} else if (value == 1){
printf("1");
*numberOfOnes = *numberOfOnes + 1;
return;
}
thisbit = value % 2;
if (thisbit) { *numberOfOnes = *numberOfOnes + 1; }
printf("%i",thisbit);
binaryPrinter(value / 2, numberOfOnes);
}
为什么?
因为您要先打印最低有效位,即要反向打印数字。
65和99是二元回文,所以结果很好。
调用(并打印)高阶位后,打印当前位的结果。
// rest of the function as before, but at the very end...
binaryPrinter(value / 2, numberOfOnes);
printf("%i",thisbit);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句