当前位置:网站首页>动态规划(一)| 斐波那契数列和归递
动态规划(一)| 斐波那契数列和归递
2022-07-31 05:11:00 【Benni-King】
作者按
谢谢大家支持,今天一觉醒来,发现登上榜啦~~~
斐波那契数列
引入
大家都知道兔子的繁殖能力很强,这个数列的来历,大概讲的就是1对刚出生的兔子,两个月后就能够繁殖新的一对,下面红色的代表到了繁殖期,其他颜色代表未达到繁殖期,
仔细观察我们不难发现他的规律就是在第三个月开始,当月都等于前两个月之和,这个就是著名的斐波那契数列,数学上用递归来定义
n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
1 | 1 | 2 | 3 | 5 | 8 | 13 | 21 |
公式
黄金分割率
天文学家开普勒发现前一项和后一项的比值趋近于一个数,就是著名的黄金分割
人的耳朵,海螺、向日葵的形状都近似于黄金螺旋,细菌的培养皿也是,其实很简单,如果没有天敌,营养充足,就会呈现出黄金螺旋的形状,如果后期环境恶化,这种情况就会萎缩,就像海螺最大圈停止生长一样。
递归
看到斐波那契数列的公式,发现他如果要用代码实现的话,就要用到递归,也就是函数自己调用自己,即Fn=Fn-1+Fn-2,递归一般都是按照自顶向下的形式编写
以下采用matlab代码演示
递归的斐波那契数列
大家可以思考一下,这个f入栈的形式是怎样的,也就是展示出来的f的值的大小顺序是如何
function f= fib_dg(n)
if n==1 ||n ==2
f=1;
else
f=fib_dg(n-1) + fib_dg(n-2);
end
end
阶乘
function f=jc(n)
if n==1
fprintf("现在n=%d\n",n);
f=1;
fprintf("现在f=%d\n",f);
else
fprintf("现在n=%d\n",n);
f=n.*jc(n-1);
fprintf("现在f=%d\n",f);
end
end
算法复杂度=时间复杂度+空间复杂度
如果这里的n过大,2^n就会无穷大,算法设计的就有问题,所以引出下列两种递归方法
带有备忘录的递归
不推荐用,因为麻烦
function f= fib_dg_memo(n)
global memo;
if n==1 ||n ==2
f=1;
elseif memo(n)== - 1
memo(n)=fib_dg_memo(n-1) + fib_dg_memo(n-2);
f=memo(n);
else
f=memo(n);
end
end
这个备忘录其实是-1的矩阵,然后写入的时候就把值替换掉
本期结束,下一期将展示自下而上的算法,并引出动态规划算法
边栏推荐
猜你喜欢
[Cloud native] Open source data analysis SPL easily copes with T+0
Why is the redis single-threaded also so fast?
12 【nextTick 过渡与动画】
16 【打包上线 图片懒加载】
[Cloud native] Ribbon is no longer used at the bottom layer of OpenFeign starting from the 2020.0.X version
【云原生】SQL(及存储过程)跑得太慢怎么办?
gin框架学习-Casbin入门指南(ACL、RBAC、域内RBAC模型)
On the side of Ali, tell me what are the application scenarios of message middleware you know?
安装Multisim出现 No software will be installed or removed解决方法
10 【高度塌陷与BFC】
随机推荐
NFT:数字所有权的核心
Take you to understand the MySQL isolation level, what happens when two transactions operate on the same row of data at the same time?
年终总结——岁月静好~
gin框架学习-Gin框架和Gorm框架搭建一个简单的API微服务
tf.keras.utils.pad_sequences()
利用phpstudy搭建DVWA
正则表达式基础知识
vulhub靶场学习日记hackme2
2021 Mianjing - Embrace Change
Understanding SSRF, this article is enough
Using IIS10 to build an asp website in win11
win11中利用IIS10搭建asp网站
10 【组件编码流程 组件自定义事件 全局事件总线】
字符串的新增方法
Error: Cannot find module ‘D:\Application\nodejs\node_modules\npm\bin\npm-cli.js‘
【云原生】SQL(及存储过程)跑得太慢怎么办?
leetcode-每日一题745. 前缀和后缀搜索(哈希和字典树)
代码执行漏洞
Yuan prospect and four track of the universe
Digital twins will be an important way to enter the "metaverse"