Java 具有两个相同参数的递归
我正在研究一种递归方法,它输出二元搜索树中最小的字符串,而二元搜索树中的字符串则相反,但我觉得我完成这项任务的方式做得很糟糕 我有一个驱动程序方法,它将根变量传递两次给递归重载方法。我觉得这不仅令人困惑,而且被认为是糟糕的做法。我两次传递它的原因是为了跟踪原始根变量,这样我就可以将它传递到需要它的搜索方法中。有没有其他方法可以做到这一点,还是我一直坚持下去 相关代码:Java 具有两个相同参数的递归,java,recursion,binary-search-tree,Java,Recursion,Binary Search Tree,我正在研究一种递归方法,它输出二元搜索树中最小的字符串,而二元搜索树中的字符串则相反,但我觉得我完成这项任务的方式做得很糟糕 我有一个驱动程序方法,它将根变量传递两次给递归重载方法。我觉得这不仅令人困惑,而且被认为是糟糕的做法。我两次传递它的原因是为了跟踪原始根变量,这样我就可以将它传递到需要它的搜索方法中。有没有其他方法可以做到这一点,还是我一直坚持下去 相关代码: public String smallRev() { return smallRev(root,root
public String smallRev() {
return smallRev(root,root); // <--- Bad practice?
}
private static String smallRev(StringNode temproot, StringNode root) {
String result;
if (temproot == null) {
result = "";
} else if (search(root, revString(temproot.getString()))) { //<-- Used here
result = temproot.getString();
} else {
String left = smallRev(temproot.getLeft(),root); // <-- Here
String right = smallRev(temproot.getRight(),root); // <-- & Here
if (!left.equals("")) {
result = left;
} else {
result = right;
}
}
return result;
}
公共字符串smallRev(){
返回smallRev(根,根);//您只需将方法中的根变量复制到临时变量中即可。无需再传递两次。@svz啊…Duh。这太尴尬了。谢谢。@svz事实上,我认为这行不通,因为我忘记了它会递归地搜索else语句中的左和右节点。真正的根变量需要传递给search声明。