Recursion 使用递归将自然数转换为二进制数

Recursion 使用递归将自然数转换为二进制数,recursion,Recursion,我必须将一个自然数转换成二进制数,但要使用递归。我做了,但没有递归: 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;

我必须将一个自然数转换成二进制数,但要使用递归。我做了,但没有递归:

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;
}
类似于(假设n为正!):

void getBin(uint n,int pot,int*bin){
*料仓+=(n%2)*罐;
n/=2;

如果(n只是为了安全起见,这不会将正数转换为二进制。它会创建一个数字,当以10为基数显示时,看起来像以2为基数的参数。 更好的解决方案是在给定的基数中将数字转换为char*

intgetbin(intn){
返回getBinHelper(n,1,0);
}
int getBinHelper(int n、int e、int acc){
返回n==0?
行政协调会:
getBinHelper(n/2,e*10,n&1?acc+e:acc);
}

我不敢相信这是第一次问这个问题!
void getBin(uint n, int pot, int* bin) {
    *bin += (n%2)*pot;
    n /= 2;
    if (n <= 0) {
       return;
    }
    getBin(n, pot * 10, bin);
}