尾递归和非尾递归(线性递归)的区别
尾递归格式:
story() {
XXXX;
story();
}
线性递归格式:
story() {
XXX;
story();
XXX;
}
尾递归,比线性递归多一个参数,这个参数是上一次调用函数得到的结果;
所以,关键点在于,尾递归每次调用都在收集结果,避免了线性递归不收集结果只能依次展开消耗内存的坏处。
是否选择尾递归 和我们是不是要return 要return什么其实没有太大的关系。
return只是一个终止的条件 你可以提前终止 也可以return 下一个递归 代表还是会继续往下走。

浙公网安备 33010602011771号