2.分治策略递归学习
一.什么是分治策略?
我的总结是:大分小,小合大。
这句话将贯穿下面所有递归算法。
首先简单了解下递归:
1.用例子学习递归
1)阶乘函数
阶乘函数的定义:
当n=0时,n!=1
当n>0时,n!=n(n-1)!
从上面我们可以知道递归的边界条件为n=0,递归方程也就是n(n-1),由此,我们可以写出下面代码:
int jieCheng(int n){
if(n==0) return 1;
return jieCheng(n-1)*n;
}
实例展示
public class RecursionStudy {
/**
* 阶乘算法的递归实现
* @param n
* @return
*/
static int jieCheng(int n){
if(n==0) return 1;
return jieCheng(n-1)*n;
}
public static void main(String[] args) {
System.out.println(jieCheng(4));
}
}
2)斐波那契数
问题描述:给出一个数,求出它的斐波那契数
1,1,2,3,5,8,13是一个斐波那契数列,当n=5时,它的斐波那契数为8,依次类推。
其公式定义为:
n<=1时, F(n)=1
n>1时, F(n)=F(n-1)+F(n-2)
很明显我们可以用递归的方式进行问题解决:
public int Fib(int n){