导语
之前只是知道递归和迭代不同,但没有细究过个中细节。正巧今晚在刷leetcode的二叉树中序遍历时,要求用递归和迭代两种方法求解,才想起来细细区分一下二者的区别。
什么是递归
递归就是不断地将一个大问题分解为多个规模更小的小问题,当问题规模小到一定程度时,可以直接求解,再依次回归。于是递归其实是两个阶段:递推——回归。
递归的条件在于,子问题与父问题相同,要有递归的终止条件。
递归是从待求解的问题出发,分解到已知答案的最小问题上。
以斐波那契数列的求解为例,采用递归方式:
public int Fibonacci(int n){
if(n > 1)
return Fibonacci