Java中的静态递归方法不会更新变量值

时间:2018-04-03 22:14:17

标签: java recursion

我有以下代码

private static void modifyX(int x) {
 if (x!=0) {
  modifyX(--x);
 }
}

我希望在递归调用后更新变量的值,所以我编写了以下代码:

public static void main(String... args) {
  int x = 5;
  modifyX(x);
  System.out.println("Modified value:\t" + x);
}

但是,值仍然相同(5)。

为什么我的变量没有更新?

1 个答案:

答案 0 :(得分:0)

您没有传递值为5的相同实例。相反,JVM正在创建一个值为5的新int,并将其传递给您的方法。

有关详细信息,请参阅this thread