我创建了两个接受十进制数字并返回该数字的二进制表示的函数。我选择了一种简单的方法,通过在一些简单的数学运算后将 1 和 0 连接到一个字符串。我创建了一个迭代和递归方法来做到这一点。然后我用老师给我的计时器课对这两种方法进行计时。事实证明,与迭代方法相比,我的递归方法大约快两倍。为什么会这样?
string CConversion::decimalToBinaryIterative(int num)
{
string ss;
while(num > 0)
{
if (num%2 != 0)
{
ss = '1' + ss;
}
else
{
ss = '0' + ss;
}
num=num/2;
}
return ss;
}
string CConversion::decimalToBinaryRecursive(int num)
{
if(num <= 0)
{
return "";
}
else
{
if (num%2 != 0)
{
return decimalToBinaryRecursive(num/2) + '1';
}
else
{
return decimalToBinaryRecursive(num/2) + '0';
}
}
}