java递归作用域变量

xxslljrj  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(520)

我在找一个程序来为给定的n对生成平衡括号。链接:https://leetcode.com/problems/generate-parentheses/ 对于解决方案,我发现在下面的代码中

public void P(List<String> list, int openB, int closeB, String output, int n) {
    if (output.length() == 2 * n) {
      list.add(output);
      return;
    }
    if (openB < n) {
      String op1 = output + "(";
           // openB=openB + 1; 
           //P(list, openB, closeB, op1, n); using this is giving different output.
      P(list, openB + 1, closeB, op1, n);
    }
    if (closeB < openB) {
      String op2 = output + ")";

      P(list, openB, closeB + 1, op2, n);
    }
}

此处使用 openB=openB+1; 与在方法本身中传递值相比,给出的结果不同

hfyxw5xn

hfyxw5xn1#

好吧,当你经过的时候 openB + 1 作为一个论据,它不会改变当地的情况 openB 变量。另一方面,当你 openB = openB + 1 它确实改变了它的值,而且,因为我们稍后在方法(中)中使用它 closeB < openB 分支),程序可能会有不同的行为。

相关问题