有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java调用堆栈如何处理带或不带返回类型的递归?

我注意到有些递归有一个返回类型,但有些递归只是以void作为返回类型。我不知道什么时候该用哪个。我还研究了调用堆栈,我猜带有“void”类型的递归只是返回堆栈上记录的值。我不知道我的理解是否正确。 我无法将返回类型为void的递归转换为返回类型为a的递归。例如,我不知道如何用void返回类型实现Fibonacci函数

private int fibonacci(int number) {

            if (number < 1) {
                return number;
            }
            return fibonacci(number-1)+fibonacci(number-2);
        }

此外,在rec函数中,我研究了调用堆栈;但我不知道程序如何知道何时在堆栈上弹出一条记录。在rec函数的基本情况下,程序运行得非常好,没有“return;”;但我注意到它也适用于“return;”。我真的不知道为什么会这样。有人能解释一下堆栈是如何与递归一起工作的吗

private static void rec(int l, int r, List<String> list,String s){
        if(r==0){
            list.add(s);
//            return;
        }

        if(l>0){
            rec(l-1,r,list,s+"(");
        }
        if(r>l){
            rec(l,r-1,list, s+")");
        }
    }

共 (0) 个答案