递归期间的字符串参数

时间:2015-11-04 16:05:27

标签: java recursion

我想了解以下递归代码的功能,它基本上打印了二叉树的路径。

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_DEFAULT);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    finish();
    System.exit(0);
}

现在打印正确的路径值,但我不明白,因为我更新了onePath&不重置它如何为每个单独的路径重置为root.val的值? 即使在我追加" - >"之后,每个树路径的onePath值如何重置为二叉树的根值? + val为前一个路径?

1 个答案:

答案 0 :(得分:4)

$this->db->select("price,count(*)",FALSE); $this->db->from("fake_apps"); $this->db->where("downdoad>","20000"); $this->db->group_by("price); $res = $this->db->get(); 是不可变的,并且使用String运算符连接两个字符串会创建一个新的+实例。连接的原始String实例保持不变。

因此,每个递归方法调用在调用堆栈上都有自己的String局部变量,它引用不同的onePath实例。

当对String的调用返回时,包含printPaths(..,..,"something" + "someNumber")的本地onePath变量(在该方法调用的堆栈帧上)可以被垃圾收集,{{1}引用somethingsomeNumber onePath的变量位于当前堆栈帧中。

唯一改变的是当前的堆栈帧。