我正在寻找一种方法(最好是递归的)来添加两个整数,并将msb对齐。
例如:125 + 25 = 375。
我试图扭转数字以有效地对齐它们,但携带将是完全错误的。即。 526(625)+ 05(50)= 531。
答案 0 :(得分:0)
1)使用while / 10循环计算两个数字的位数
2)获得差异
3)将最小数乘以10 ^差
4)将它们加在一起
答案 1 :(得分:0)
你需要包含math.h。假设m和n是自然数,下面的工作方法是将较小的数乘以10(如果需要),直到它与较大的数字相同,然后加上。
int funkyAdd (int m, int n)
{
if ((m<=0)||(n<=0)){return -1;}
int smaller=std::min(m,n);
int larger=std::max(m,n);
while (floor(log10(smaller))<floor(log10(larger))){smaller*=10;};
return (smaller+larger);
}