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) 个答案