著名数列及其算法(斐波拉契)
1、斐波那契数列 | 2、帕多瓦数列 |
---|---|
3、卡特兰数 | 4、Look-and-say 数列 |
5.递推数列 | |
– | – |
1、斐波那契数列
斐波那契数列,又称黄金分割数列、因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,提出时间为1202年。
指的是这样一个数列:1、1、2、3、5、8、13、21、34、…;在数学上,
斐波那契数列以如下被以递归的方法定义:
F(1)=1, F(2)=1, F(n)=F(n-1)+F(n-2) (n>2,n∈N*)。
方法一:递归方法
function f(n) {
if ( n1 || n2 ){
return 1;
}else{
return f(n-1) + f(n-2);
}
}
console.log(f(6));
方法二:动态规划方法(性能得到优化)
function fibonacci(n) {
let n1 = 1,
n2 = 1,
sum = 1;
for(let i = 3; i <= n; i += 1) {
sum = n1 + n2;
n1 = n2; //往后移动一位数
n2 = sum
}
return sum
}
console.log(fibonacci(5));
2、帕多瓦数列
帕多瓦数列是由帕多瓦总结而出的。
它和斐波拉契数列非常相似,稍有不同的是:每个数都是跳过它前面的那个数,并把再前面的两个数相加而得出的。
它的特点为从第四项开始,每一项都是前面2项与前面3项的和。
即x=(x-2)+(x-3),x为项的序数(x>4)。
帕多瓦数列是:1,1,1,2,2,3,4,5,7,9,12,16,21,28,37,49,65,86,114,151……
3、卡特兰数
卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列。以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,
其前几项为(从第零项开始) :
1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700,
卡特兰数Cn满足以下递推关系 :
设h(n)为catalan数的第n+1项,令h(0)=1,h(1)=1,catalan数满足递推式 [2] :
h(n)= h(0)*h(n-1)+h(1)*h(n-2) + … + h(n-1)*h(0) (n>=2)
5、递推数列
递推数列是可以递推找出规律的数列,找出这个规律的通项式就是解递推数列。求递推数列通项公式的常用方法有:公式法、累加法、累乘法、待定系数法等共十种方法。
1)等比数列(一般地,如果一个数列从第2项起,每一项与它的前一项的比等于同一个常数,这个数列就叫做等比数列)
An=A1q(n-1)可以表示为:An=qA(n-1);
2)等差数列(一般地,如果一个数列从第2项起,每一项与它的前一项的差等于同一个常数,这个数列就叫做等差数列)
an=a1+(n-1)d
3)等和数列(在一个数列中,如果每一项与它的后一项的和都为同一个常数,那么这个数列叫做等和数列,这个常数叫做该数列的公和。)
d=an-an-1 (n≥2)
4)大衍数列 0、2、4、8、12、18、24、32、40、50------
通项式:
an=(n×n-1)÷2 (n为奇数)
an=n×n÷2 (n为偶数)
4、Look-and-say 数列
Look-and-say 数列是数学中的一种数列,它的名字就是它的推导方式:给定第一项之后,后一项是前一项的发音。
1983年11月,在英国剑桥大学教书的著名数学家约翰·霍顿·康威(John Horton Conway) 首先发现了Look-and-say的奥秘
如果我们把 1 作为Look-and-say 数列的第一项,那么,它的前几项是这样的:
1, 11, 21, 1211, 111221, 312211, 13112221, 1113213211, …
在确定了Look-and-say 数列的第一项之后,就可以根据前一项确定后一项的值了,在上面的示例中,我们把 1 作为此种数列的第一项,那么,就可以这样来推导它的其余项了:
第1个是 1 时,记作 1;
第2个是读前一个数 “2 个1”, 记作 21;
第3个是读前一个数 “1个2, 1个1”, 记作 1211;
第4个是读前一个数 “1个1,1个2,2个1”, 记作 111221;
当 d =22 时,很尴尬的事情发生了,Look-and-say 数列的前几项是:
22, 22, 22, 22,22, …
著名数列及其算法(斐波拉契)相关推荐
- 算法—斐波拉契数列(跳楼梯问题)
问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 这道题一看,就会轻易的知道用递归,f(1)=1;f(2)=1;f(n)=f(n-1)+f(n-2 ...
- 007.斐波拉契查找算法
1. 斐波拉契查找算法 斐波拉契查找算法也称为黄金分割查找算法,它是在折半查找算法的基础上根据斐波拉契数列进行分割.折半法是取排序好的中间值进行分割,而斐波拉契查找算法是根据黄金分割点进行分割. 黄金 ...
- matlab斐波那契数列画图,斐波拉契数列 斐波那契数列 matlab程序
斐波那契数列数列从第3项开始,每一项都等于前两项之和. 例子:数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,25 ...
- 经典算法(6)斐波拉契数列、兔子繁殖、跳台阶算法
写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字.我热爱技术.热爱开源.热爱编程.技术是开源的.知识是共享的. 这博客是对自己学习的一点点总结及记录,如果您对 Java.算法 感兴 ...
- 趣学算法之斐波拉契数列实现
1.斐波拉契数列 f(1) = 1; f(2) = 1; f(3) = f(1) + f(2);以此内推1 x = 1 f(x) = 1 x = 2f(x - 1) + f(x - 2) x > ...
- 递归、尾递归、迭代算法【在 斐波拉契数列】上的实现
/* 递归: [逆序]从未知点推到已知点,[顺序]代入已知点结果,从已知点带入并计算到未知点,最终到终点 尾递归: 从起点开始,依顺序计算结果,并无限靠近最终目标点 迭代: 从 ...
- 斐波拉契数列——算法
斐波拉契数列 题目描述 斐波那契数列是一组第一位F1和第二位F2为1,从第三位开始,后一位是前两位和的一组递增数列Fn=Fn-1+Fn-2. 那么当n比较大时,Fn也非常大,现在我们想知道,第n项,F ...
- python斐波拉契数列/素数数列
一.斐波拉契数列 著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, - def fib(n ...
- C语言数据结构----递归的应用(斐波拉契数列、汉诺塔、strlen的递归算法)
本节主要说了递归的设计和算法实现,以及递归的基本例程斐波拉契数列.strlen的递归解法.汉诺塔和全排列递归算法. 一.递归的设计和实现 1.递归从实质上是一种数学的解决问题的思维,是一种分而治之的思 ...
最新文章
- 7 centos 源码安装samba_在CentOS7.6里编译安装PHP7.4(最新版),很详细
- 卷积神经网络性能优化
- 160个CrackMe002
- NLP深度学习:PyTorch文本分类
- 音视频技术开发周刊 | 140
- L1-011 A-B(13行代码AC!!)
- xampp启动Apache端口被占用,修改端口
- 【cogs2711】jump,二分答案+倍增套ST表
- jqGrid 使用案例及笔记
- c语言中stdio什么意思6,求助,return,stdio是什么意思,在C语言中又是什么意思
- 手把手教你:人脸识别考勤系统
- SpringMVC工作原理详细讲解
- DOM以及DOM事件的处理方式
- 在被线上大量日志输出导致性能瓶颈毒打了很多次之后总结出的经验
- SELinux权限问题解决
- 2023北京理工大学计算机考研信息汇总
- MYSQL笔试题(考试题)附带答案
- 2.8 CSS3新特性
- 跨境物流的主要操作流程是怎样的?
- Oracle11g R2相比R1的区别