尾递归和非尾递归(线性递归)的区别

尾递归格式:
story() {
XXXX;
story();
}

线性递归格式:
story() {
XXX;
story();
XXX;
}

尾递归,比线性递归多一个参数,这个参数是上一次调用函数得到的结果;
所以,关键点在于,尾递归每次调用都在收集结果,避免了线性递归不收集结果只能依次展开消耗内存的坏处。

是否选择尾递归 和我们是不是要return 要return什么其实没有太大的关系。
return只是一个终止的条件 你可以提前终止 也可以return 下一个递归 代表还是会继续往下走。

posted @ 2020-12-05 00:12  EvanMeetTheWorld  阅读(53)  评论(0)    收藏  举报