我必须将自然数转换为二进制,但使用递归。我做了但没有递归:
int main (){
int n,pot,bin;
printf("Digite o Numero:\n");
scanf("%d",&n);
pot=1;
bin=0;
while (n>0){
bin+=(n%2)*pot;
pot*=10;
n= n/2;
}
printf ("%d",bin);
getch();
return 0;
}
答案 0 :(得分:0)
void getBin(uint n, int pot, int* bin) {
*bin += (n%2)*pot;
n /= 2;
if (n <= 0) {
return;
}
getBin(n, pot * 10, bin);
}
答案 1 :(得分:0)
为了安全起见,这不会将正数转换为二进制数。它创建一个数字,当在基数10中显示时,看起来像基数2中的参数。 更好的解决方案是将数字转换为给定基数中的char *。
int getBin(int n) {
return getBinHelper(n, 1, 0);
}
int getBinHelper(int n, int e, int acc) {
return n == 0 ?
acc :
getBinHelper( n/2, e*10, n&1 ? acc+e : acc);
}