所以,我试图在java工作中简单实现一个动态编程问题。该方法是算法的切杆法,第三版(Rivest等人)第15章这是我的代码 -
public static double cutRod(double[] p, int n){
if(n==0)return 0;
double q = -1000;
for(int i=0;i<n;i++){
q = Math.max( q, p[i]+cutRod(p,n-i));
}
return q;
}
public static void main(String[] args) throws FileNotFoundException, IOException{
double[] p = {1,5,8,9,10,17,17,20,24,30};
double val = cutRod(p,10);
System.out.println(val);
}
当我尝试运行它时,我得到一个堆栈溢出错误。即使我尝试调试它(我正在使用 netbeans),它也会在第一次递归调用时暂停一段时间,然后给我一个堆栈溢出错误。有任何想法吗?