java从递归到if-else语句
如何将其转换为if-else语句?我被困在下面的评论的一部分。我想把背包()分成if语句
static int max_val(int a, int b){
return(a>b)? a: b; //set value for a = 1 and b = 0
}
static int knapsack(int max_bag_limit, int[] weight, int[] value, int size){
if (size ==0 || max_bag_limit == 0){ //base case
return 0;
}
if(weight[size - 1] > max_bag_limit){
return knapsack(max_bag_limit, weight, value, size-1);
}
else{
return max_val(value[size-1]
+ knapsack(max_bag_limit - weight[size - 1],weight,value, size -1), //im stuck at this line
knapsack(max_bag_limit, weight, value, size -1) );
}
}
我试着这样做,因为我需要把它放在一个按钮
else if(counter == 6){ //max_val compare knapsack A and Knapsack B
printCode(1);
if(knapsackA>knapsackB){
total = knapsackA;
}
else total = knapsackB;
}
else count = 1; // to avoid 0;
}
# 1 楼答案
为了更好地控制算法,您需要中断一个步骤来执行。这意味着您需要考虑对单个步骤执行什么操作,以及需要存储什么状态,以便执行下一步。递归的直接重新实现可以使用显式
Stack
,而不是依赖JRE中的调用堆栈