我正在试图解决一个问题,这个问题要求找到1
long around(long n)
{
long around = 0;
while (n > 0){
around = around * 10 + (n % 10);
n = n / 10;
}
return around;
}
long convert(int n, int b)
{
long x = 0;
while (true){
x = x * 10 + (n % b);
if (n == 1)
break;
n = n / b;
}
return around(x);
}
请推荐任何更快的解决方案来将十进制转换为基B,或给出任何提高我当前解决方案性能的提示。
最佳答案
问题是您的convert
函数,它会进入一个无限循环。你只有在n == 1
时才会崩溃,但如果它永远不会变成1呢?
考虑n = 4
和b = 5
。那么4 / 5
就是0
。一旦n
为零,它将始终为零,并且永远不会1
。
当n < b
时,你应该跳出循环。
关于algorithm - 将小数转换为基数x,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5283332/