为了账号安全,请及时绑定邮箱和手机立即绑定

连续两句相同的递归方法是如何执行的

连续两句相同的递归方法是如何执行的

car 2017-06-07 23:58:46
private int getOptionVarArr_rec(VdsObj vdsObj, int r, List<Integer> arrVarQuantset, List<Integer> arrVarQuantRes, int[] applycache) { if (r < 2) { return r; } List<BddObj> P_arrAllNodes = vdsObj.getP_arrAllNodes(); BddObj oNode = P_arrAllNodes.get(r); int iLvl = oNode.getLevel();  if (applycache[r] != -1) return applycache[r]; int res, val0, val1; if (arrVarQuantset.get(iLvl) == 1) res = getOptionVarArr_rec(vdsObj, oNode.getHigh(), arrVarQuantset, arrVarQuantRes, applycache); else if (arrVarQuantset.get(iLvl) == 0)  res = getOptionVarArr_rec(vdsObj, oNode.getLow(), arrVarQuantset, arrVarQuantRes, applycache); else {  val0 = getOptionVarArr_rec(vdsObj, oNode.getLow(), arrVarQuantset, arrVarQuantRes, applycache); val1 = getOptionVarArr_rec(vdsObj, oNode.getHigh(), arrVarQuantset, arrVarQuantRes, applycache); int iLowLvl = P_arrAllNodes.get(oNode.getLow()).getLevel(); int iHighLvl = P_arrAllNodes.get(oNode.getHigh()).getLevel();  if (val0 == 1 && val1 == 1) {  arrVarQuantRes = setOneVarOption(iLvl, -2, arrVarQuantset, arrVarQuantRes); if (iLvl + 1 < iLowLvl) arrVarQuantRes = getOptionVarArr_rec_lvl(iLvl, iLowLvl, arrVarQuantset, arrVarQuantRes); if (iLvl + 1 < iHighLvl) arrVarQuantRes = getOptionVarArr_rec_lvl(iLvl, iHighLvl, arrVarQuantset, arrVarQuantRes); res = 1; } else if (val0 == 1 && val1 == 0) {  arrVarQuantRes = setOneVarOption(iLvl, 0, arrVarQuantset, arrVarQuantRes); if (iLvl + 1 < iLowLvl) arrVarQuantRes = getOptionVarArr_rec_lvl(iLvl, iLowLvl, arrVarQuantset, arrVarQuantRes); res = 1; } else if (val0 == 0 && val1 == 1) {  arrVarQuantRes = setOneVarOption(iLvl, 1, arrVarQuantset, arrVarQuantRes); if (iLvl + 1 < iHighLvl) arrVarQuantRes = getOptionVarArr_rec_lvl(iLvl, iHighLvl, arrVarQuantset, arrVarQuantRes); res = 1; } else res = 0;  } applycache[r] = res; return res; }不太明白val0 = getOptionVarArr_rec(vdsObj, oNode.getLow(), arrVarQuantset, arrVarQuantRes, applycache); 下的代码是如何执行。我的理解是不断的调用getOptionVarArr_rec方法,遇到r < 2为true时退出,但实际代码能执行下去val1的值
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 1277 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信