什么是递归?
一个方法在执行过程中调用自身, 就称为 “递归”。
递归它通常把一个大型复杂的问题层层转化为一个个的较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量,简化了程序设计。
一句话总结:递归就是自己调用自己。
递归的条件
递归有两个重要条件:
1.自身调用
可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式。
2.递归出口
存在一种简单情境,可以使递归在简单情境下退出。
递归的算法结构
递归的常用算法伪代码如下:
func( mode){ if(endCondition){ //递归出口 end; }else{ func(mode_small) //调用本身,递归 } }
递归算法的步骤
递归实战举例
1)斐波那契数的递归实现
斐波那契数列的递推公式:Fib(n)=Fib(n-1)+Fib(n-2),生成数列(1、1、2、3、5、8…)。
2)99乘法表的递归实现
递归算法总结
递归算法是一种直接或间接地调用自身的算法,如果一个问题可以解可以分解为几个子问题的解,这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》