当前位置:网站首页>动态规划(一)| 斐波那契数列和归递
动态规划(一)| 斐波那契数列和归递
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的矩阵,然后写入的时候就把值替换掉
本期结束,下一期将展示自下而上的算法,并引出动态规划算法
边栏推荐
猜你喜欢

vulhub靶场学习日记hackme2
![[Cloud native] Ribbon is no longer used at the bottom layer of OpenFeign starting from the 2020.0.X version](/img/7e/1d27e3f1856ab8c6cbfc5221c717bb.png)
[Cloud native] Ribbon is no longer used at the bottom layer of OpenFeign starting from the 2020.0.X version

Artifact SSMwar exploded Error deploying artifact.See server log for details

leetcode-每日一题565. 数组嵌套(标记图和并查集)

vulhub靶场学习日记SickOs1.2

数据库 | SQL增删改查基础语法

vulhub靶场学习日记xxe-lab

Kubernetes certificate validity period modification

阿里一面,说说你知道消息中间件的应用场景有哪些?

Eternal blue bug reappears
随机推荐
uni-app进阶之样式框架/生产环境【day10】
了解SSRF,这一篇就足够了
The latest MySql installation teaching, very detailed
The MySQL database in Alibaba Cloud was attacked, and the data was finally recovered
为什么redis是单线程还那么快?
13 【代理配置 插槽】
Memcached :安装
Build vulhub vulnerability shooting range on kali
Yuan prospect and four track of the universe
Year-end summary - the years are quiet~
年终总结——岁月静好~
MySQL高级SQL语句(二)
vulhub靶场学习日记hackme2
Take you to understand the MySQL isolation level, what happens when two transactions operate on the same row of data at the same time?
feign调用不通问题,JSON parse error Illegal character ((CTRL-CHAR, code 31)) only regular white space (r
5 methods of MySQL paging query
变量的解构赋值
NFT与数字藏品到底有何区别?
02 【el和data的两种写法 MVVM模型】
win11中利用IIS10搭建asp网站