我在java中编写了一个递归程序来乘以两个大整数。我将输入作为字符串获取并将其存储在一个 int 数组中,该数组将每个数字保存在每个单元格中,并且我的整个程序在两个 int 数组上工作。我的程序适用于大小约为 1000 位的输入。当我输入大约 2000 位数字时,我的程序就会停止(在 eclipse 中)。没有“未响应”状态,没有错误/通知消息,也没有输出。我想知道限制我的程序输入的工作限制大小的问题是什么。是因为我使用递归并且没有足够的内存来存储堆栈帧吗?
这是我的程序的核心
private int[] bigInt(int[] a, int[] b, int expo) {
if(n1==1)
{
result=multiply(a[a.length-1],b[a.length-1]);
if(expo!=0)
result=exponential(result,expo);
}
else
{
int A1[]=divideArray(a,0,n1/2);
int A2[]=divideArray(a,n1/2,n1);
int B1[]=divideArray(b,0,n2/2);
int B2[]=divideArray(b,n2/2,n2);
int tempA[]=bigInt(A1,B1,0);
int A[]=exponential(tempA, n1);
int[] addB=addArray(B1,B2);
int[] addA=addArray(A1,A2);
int Byet[]=bigInt(addA,addB,0);
int C[]=bigInt(A2,B2,0);
int B[]=subArray(Byet,tempA,C,n1/2);
result=addArray(A,addArray(B,C));
}
return result;
}