gpt4 book ai didi

c - 递归或提取变量

转载 作者:太空宇宙 更新时间:2023-11-04 04:24:18 24 4
gpt4 key购买 nike

void base_aux(unsigned int n, unsigned int base, unsigned int x) {
zero_int(32 - x);
if (n > (base - 1)) {
base_aux(n / base, base, ++x);
printf("%u", n % base);
} else {
printf("%u", n);
}
}

void binary_int(unsigned int n) {
base_aux(n, 2, 0);
}

我正在制作一个从十进制到任何基数的转换器。我必须使用递归并且需要打印前导零。我希望在不递归的情况下打印零。我只会在我的实际函数中调用它,但我不知道如何从中获得递增的 x。请帮忙。

zero_int 是一个辅助函数,它将简单地打印所需数量的零。

即what I get at the moment when I attempt to convert 1288 to decimal is 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010100001000.

我想要得到的是 00000000000000000000010100001000。

我看到这是因为在每次递归调用时它都会重复放置那些前导零,这会产生太多,但我不确定如何解决这个问题。

最佳答案

仅考虑基数 2(二进制):

问题出在调用 zero_int 函数的地方。您需要确保只调用一次并使用正确的 x 值。

像下面这样修改您的代码应该主要有效:

void base_aux(unsigned int n, unsigned int base, unsigned int x) {
if (n > (base - 1)) {
base_aux(n / base, base, ++x);
printf("%u", n % base);
} else {
++x;
zero_int(32 - x);
printf("%u", n);
}
}

关于c - 递归或提取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43270761/

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