我想了解以下递归代码的功能,它基本上打印了二叉树的路径。
@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为前一个路径?
答案 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
的变量位于当前堆栈帧中。
唯一改变的是当前的堆栈帧。