递归法求十进制向二进制的转换
方法一
#include<iostream>
using namespace std;
int main()
{
int a[50];
int k=0,n;
cout<<"请输入一个十进制数:"<<endl;
cin>>n;
cout<<"相应的二进制数是:"<<endl;
while(n>0)
{
a[k]=n%2;
n=n/2;
++k;
}
for(;k>=0;k--)
{
cout<<a[k];
}
return 0;
}
方法二
#include<iostream>
using namespace std;
void d2b(int n)
{
if(n==0)
cout<<0;
else if(n==1)
cout<<1;
else
{
d2b(n/2);
cout<<(n%2);
}
}
int main()
{
int a;
cout<<"请输入一个十进制数:"<<endl;
cin>>a;//输入十进制数
cout<<"相应的二进制数是:"<<endl;
d2b(a);//转换成二进制数输出
return 0;
}
问题:为什么第一种方法输出二进制数时前面会有乱数,然后才输出正确的二进制数?