如何在跟踪进位的同时获得两个数组的总和(如 java 中的 bigInt)?
How do you get the sum of two arrays while keeping track of carry (like bigInt in java)?
我仍在学习编程,我正在尝试添加两个数组 A 和 B,同时跟踪进位。数组都是 SIZE = 20
并且看起来像这样:A = {0,0,..,n}
我下面的代码似乎不起作用,我终生无法找出错误所在。例如,如果我添加
A ={0,0,0...,1,2,3}
作为数组和
B ={0,0,0,...,7,8,9}
作为数组我得到 802
而不是 912.
代码:
int index = SIZE -1;
int[] newBI = new int[SIZE]
while(index >=0)
{
int carry = 0;
int sum = A[index] + B[index] + carry;
if(sum >=10) {
carry = sum/10;
sum = sum %10;
}
newBI[index] = sum;
index--;
}
return newBI;
}
请帮忙!
如评论中所述,您需要记住 carry
从一位到下一位的值。此外,在没有数字溢出时清除 carry
也很重要。最后,如果在循环结束时设置了 carry
,则总和太大而无法放入数组中。
static int[] sum(int[] A, int[] B)
{
int index = SIZE -1;
int[] newBI = new int[SIZE];
int carry = 0;
while(index >=0)
{
int sum = A[index] + B[index] + carry;
if(sum >= 10) {
carry = sum/10;
sum = sum %10;
}
else
{
// important to clear the carry
carry = 0;
}
newBI[index] = sum;
index--;
}
if(carry == 1)
{
throw new ArithmeticException();
}
return newBI;
}
我仍在学习编程,我正在尝试添加两个数组 A 和 B,同时跟踪进位。数组都是 SIZE = 20
并且看起来像这样:A = {0,0,..,n}
我下面的代码似乎不起作用,我终生无法找出错误所在。例如,如果我添加
A ={0,0,0...,1,2,3}
作为数组和
B ={0,0,0,...,7,8,9}
作为数组我得到 802
而不是 912.
代码:
int index = SIZE -1;
int[] newBI = new int[SIZE]
while(index >=0)
{
int carry = 0;
int sum = A[index] + B[index] + carry;
if(sum >=10) {
carry = sum/10;
sum = sum %10;
}
newBI[index] = sum;
index--;
}
return newBI;
}
请帮忙!
如评论中所述,您需要记住 carry
从一位到下一位的值。此外,在没有数字溢出时清除 carry
也很重要。最后,如果在循环结束时设置了 carry
,则总和太大而无法放入数组中。
static int[] sum(int[] A, int[] B)
{
int index = SIZE -1;
int[] newBI = new int[SIZE];
int carry = 0;
while(index >=0)
{
int sum = A[index] + B[index] + carry;
if(sum >= 10) {
carry = sum/10;
sum = sum %10;
}
else
{
// important to clear the carry
carry = 0;
}
newBI[index] = sum;
index--;
}
if(carry == 1)
{
throw new ArithmeticException();
}
return newBI;
}