有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    为了更好地控制算法,您需要中断一个步骤来执行。这意味着您需要考虑对单个步骤执行什么操作,以及需要存储什么状态,以便执行下一步。递归的直接重新实现可以使用显式Stack,而不是依赖JRE中的调用堆栈