编程思想:如何利用数学模式,来解决对应的需求问题;然后利用代码实现对应的数据模型(逻辑)。

算法:使用代码实现对应的数学模型,从而解决对应的业务问题。

1、递推算法

通过已知条件,利用特定关系得出中间推论,直到得到结果的算法。递推算法分为顺推和逆推两种。

顺推:通过最简单的条件(已知),逐步推演结果
逆推:通过结果找到规律,然后推到已知结果
斐波那契数列:1 1 2 3 5 8 13 21 …,通常需求,求得指定位置N所对应的值是多少

2、递归算法

把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解

  1. 简化问题:找到最优子问题(不能再小)
  2. 函数自己调用自己

递归思想中:两个非常重要的点
递归点:发现当前问题可以解决档期问题的函数,去解决规模比当前小一点的问题来解决
F(N) = F(N-1) + F(N-2)
递归出口:当问题解决的时候,已经到达(必须有)最优子问题,不能再次调用函数

如果一个函数递归调用自己而没有递归出口:就是死循环
递归的本质就是函数调用函数:一个函数需要开辟一块内存空间,递归会出现同时调用N多个函数(自己):递归的本质是利用空间换时间

Scroll to Top