Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 非静态方法中的递归_Java_Recursion_Non Static - Fatal编程技术网

Java 非静态方法中的递归

Java 非静态方法中的递归,java,recursion,non-static,Java,Recursion,Non Static,我在论坛上找不到这个问题的答案,很抱歉,如果这个问题得到了回答,我错过了 在这里,我对在非静态方法上使用递归一无所知 例如: public static void farLeft(BTNode root){ if(root !=null) return farLeft(root.left); } 这只是我在这里输入的一些随机代码。如果我想用一个非静态方法做同样的事情,我该如何在一个非静态方法上使用递归呢?我的书没有很好地解释它。您在返回void的方法中返回了

我在论坛上找不到这个问题的答案,很抱歉,如果这个问题得到了回答,我错过了

在这里,我对在非静态方法上使用递归一无所知

例如:

  public static void farLeft(BTNode root){
     if(root !=null)  
       return farLeft(root.left);
  }

这只是我在这里输入的一些随机代码。如果我想用一个非静态方法做同样的事情,我该如何在一个非静态方法上使用递归呢?我的书没有很好地解释它。

您在返回void的方法中返回了一个非void对象。除此之外,您可以使用如下非静态方法:

public BTNode farLeft(BTNode root){
    if(root !=null)
        return farLeft(root.left);

    //Return root because root has no left child
    return root;
}
public BTNode farLeft(BTNode root){
     if(root !=null)  
         return root.farLeft(root.left);
}

对于非静态方法,需要使用类实例调用它。 该方法不应是私有的

如果该方法是在类
BTNode
中实现的,它将如下所示:

public BTNode farLeft(BTNode root){
    if(root !=null)
        return farLeft(root.left);

    //Return root because root has no left child
    return root;
}
public BTNode farLeft(BTNode root){
     if(root !=null)  
         return root.farLeft(root.left);
}


希望这有帮助。祝你好运,编程愉快

干杯


在递归方面,方法是静态的还是非静态的不太可能有区别。你能给出一个你认为可行的方法的例子吗?任何方法都可以递归,只要它有终止条件。如果它是非静态的,只需将其作为类实例的方法调用即可。是否删除
静态的
?你在哪个班?@Boristeider:是的。你是对的。