黑客界也有类似的编码问题。挑战现在结束。我现在没有这个问题,但是我的代码看起来像这样。我通过了测试用例,但是由于大量输入而我的代码未被接受,导致出现此错误。 我已经编写了以下代码。
import java.util.*;
class TripleStep{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=10000;
long[] memo=new long[n+1];
Arrays.fill(memo,-1);
long ans=StairOpr(n,memo);
Arrays.fill(memo,-1);
System.out.println(ans);
}
public static long StairOpr(int n,long[] memo){
if(n<0){
return 0;
}
else if(n==0){
return 1;
}
else if(n==1){
return 2;
}
else if(n==2){
return 3;
}
else if(memo[n]>-1){
return memo[n];
}
else
memo[n]= (StairOpr(n-1,memo)%1000000007+StairOpr(n-2,memo)%1000000007+StairOpr(n-3,memo)%1000000007+n*n*(n+1)%1000000007)%1000000007;
return memo[n];
}
}
对于输入值10000,代码给出以下错误。
Exception in thread "main" java.lang.StackOverflowError
at TripleStep.StairOpr(TripleStep.java:31)
at TripleStep.StairOpr(TripleStep.java:31)
原因是什么,解决方案是什么?由于我编写动态编程代码,但是由于错误,答案未提交,因此我被拒绝。
答案 0 :(得分:0)
您的递归函数正在创建一个大堆栈,这意味着您的函数一次又一次地调用自身,这超出了内存空间可以处理的范围。
请描述您要解决的问题。