我必须用C写一个递归函数来把一个十进制数转换成二进制数。
这是我们得到的void dec_to_binary(int n)
的原型。
我的代码:
void dec_to_binary(int n)
{
// base case: if the number is 0, return
if (n == 0)
{
return;
}
// recursive case: divide the number by 2 and call the function again
dec_to_binary(n / 2);
// print the remainder (which will be 0 or 1)
printf("%d", n % 2);
}
为什么n
为0时不起作用?
3条答案
按热度按时间baubqpgj1#
当input为0时,代码不会打印任何内容,因为它会立即返回。也许可以在调用函数之前检查input是否为0,如下所示:
请记住,它不支持负数,可能还有更好的方法
b4qexyjb2#
有可能实现一种不需要 Package 函数或第二个参数的方法。
uqxowvwt3#
如上所述,当前的
dec_to_binary
函数在输入为0时立即返回,不执行任何操作。不需要添加函数就可以解决这个问题,
通过具有用于0和1的递归的基本情况:
输出:
请注意,此解决方案仅适用于非负值,因此我将输入类型更改为
unsigned
。