gpt4 book ai didi

c - 递归地将十进制数转换为二进制数

转载 作者:行者123 更新时间:2023-12-04 06:20:37 24 4
gpt4 key购买 nike

在家庭作业中,我被要求创建一个递归函数,它接受一个 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);

关于c - 递归地将十进制数转换为二进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24399486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com