===========================================================================================
优点:
使用递归算法的优点是代码简洁且容易理解,
缺点:
时间和空间消耗比较大,每一次函数调用都需要在内存栈中分配空间,对栈的操作可能还需要时间,因此时间和空间复杂度较高。
如果子问题之间存在重叠,则在不加记忆化的情况下,可能产生重复计算导致时间复杂度过高。
由于栈的空间有限,如果递归调用的次数太多,则可能导致调用栈溢出。
==============================================================================================
解决递归的缺点有多种方式,尾递归
是一种做法,另外还可以通过加记忆化的方式避免重复计算,以及改用迭代实现。
=======================================================================================
当递归调用是方法中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归
。
尾递归的特点是在返回时直接传回原始的调用者,而不用经过中间的调用者,
这个特点很重要,因为大多数现代的编译器会利用该特点自动生成优化的代码。
使用尾递归代替普通的递归,可以在时间和空间方面都带来显著的提升。
==============================================================================================
斐波那契数列的普通递归实现:
/**
* 斐波那契数列普通递归实现
* @param index
* @return
*/
public static long fibonacci(long index) {
if (index <= 1) {
return index;
} else {
return fibonacci(index - 1) + fibonacci(index - 2);
}
}
斐波那契数列的尾递归实现:
/**
* 斐波那契数列尾递归实现
* @param index
* @return
*/
public static long fibonacciTailRecursion(long index) {
return fibonacciTailRecursion(index, 0, 1);
}
/**
*递归体
* @param index 循环序列
* @param present 当前值
* @param next 下一个值
* @return
*/
public static long fibonacciTailRecursion(long index, int present, int next) {
if (index == 0) {
return present;
} else {
return fibonacciTailRecursion(index - 1, next, present + next);
# 技术学习总结
学习技术一定要制定一个明确的学习路线,这样才能高效的学习,不必要做无效功,既浪费时间又得不到什么效率,大家不妨按照我这份路线来学习。
![](https://img-blog.csdnimg.cn/img_convert/d7a6ddd2bb9494ee1ad0132fc5304223.png)
![](https://img-blog.csdnimg.cn/img_convert/d7ac2d43ad4eedc63eb8a175760eecfa.png)
![](https://img-blog.csdnimg.cn/img_convert/b3e04893684082264f7e0c971badb6c0.png)
# 最后面试分享
大家不妨直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
![](https://img-blog.csdnimg.cn/img_convert/c930dfb3da75997e8471963def2c237a.png)
![](https://img-blog.csdnimg.cn/img_convert/5d43e26670daa67c989c4b71ff817688.png)
直接在牛客和力扣上多刷题,同时,我也拿了一些面试题跟大家分享,也是从一些大佬那里获得的,大家不妨多刷刷题,为金九银十冲一波!
[外链图片转存中...(img-PAPzSS4n-1628268031810)]
[外链图片转存中...(img-yL8hVZLH-1628268031812)]
**最后,若需要完整pdf版,可以点赞本文后[点击这里免费领取](https://gitee.com/vip204888/java-p7)**