Java 回溯背包

Java 回溯背包,java,Java,我在哪里递归调用函数方面遇到了问题。如果我把它放在else条件中,它将不会在函数返回时检查其他元素。如果我把它放在else之外,它将在返回时执行一次,而在返回时不执行其他元素。 我应该如何更改代码,以便在回溯时检查每个元素?(权重和利润数组是公共数组) 提前谢谢 private static int calculateMaxProfit(int n, int maxprofit,int weight) { if(weight+weights[i]>maxweight) {

我在哪里递归调用函数方面遇到了问题。如果我把它放在else条件中,它将不会在函数返回时检查其他元素。如果我把它放在else之外,它将在返回时执行一次,而在返回时不执行其他元素。 我应该如何更改代码,以便在回溯时检查每个元素?(权重和利润数组是公共数组)
提前谢谢

private static int calculateMaxProfit(int n, int maxprofit,int weight) 
{
    if(weight+weights[i]>maxweight)
    {
        i++;
        if(i<n)
            return calculateMaxProfit(n,maxprofit,weight);
        else
            return 0;
    }
    else
    {
        weight+=weights[i];
        maxprofit+=profits[i];
    }

}
私有静态int-calculateMaxProfit(int-n,int-maxprofit,int-weight)
{
if(重量+重量[i]>最大重量)
{
i++;
如果(i
static intmax(inta,intb){return(a>b)?a:b;}
静态整数背包(整数W,整数wt[],整数利润[],整数n)
{ 
//基本情况
如果(n==0 | | W==0)
返回0;
如果(wt[n-1]>W)
返回背包(W,wt,利润,n-1);
返回最大值(利润[n-1]+背包(W-wt[n-1],wt,利润,n-1),
背包(W,wt,利润,n-1);
}