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);
}