我经历了以下定义的尾递归
如果递归调用是该函数完成的最后一件事,则称递归函数为尾递归,而无需保留先前状态的记录。
我也检查了this个答案。但是我仍然有一个查询:
public static void main(String[] args) {
doit(3);
}
public static void doit(int n) {
if (n < 1) {
return;
}
doit(n-1);
fact2(n);
doit(n-1);
}
public static void fact2(int n) {
System.out.println(n);
}
在上述递归调用中,我们可以将其称为尾递归还是非尾递归?或者我们可以将其拆分为代码,说事实2(n)之后的最后一行是尾递归,而事实2(n)之前的最后一行是非尾递归?
如果我将上述调用更改为
public static void doit(int n) {
if (n < 1) {
return;
}
doit(n-1);
fact2(n);
doit(n-1);
fact2(n)
}
这将是尾递归的吗?