斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为 “兔子数列”。
斐波那契数列
一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?
第1种:
Private Sub Command1_Click()
i = 0
x = 1
y = 1
b = x & "," & y
For n = 3 To 13 Step 1
i = x + y
x = y
y = i
b = b & "," & i
Next
Print b
End Sub
这个算法是最经典的。其实a月的数量也就是老兔子加上新生兔子。老兔子这么算的:因为当月的生产数量为上个月的兔子总数,而这个生产数量就是由老兔子生的。所以老兔子的数量就是a-1月的数量也就是上一个月的数量。新兔子这么算的:因为新兔子就是上一个月的繁殖数量,即a-1月的繁殖数量,而这个繁殖数量就是由a-2月的总数决定的,所以新兔子就是a-2月了。所以根据这个原理,第一种方法成立。
第2种:
Private Sub Command1_Click()
i = 0
x = 1
y = 1
z = 2
b = x & "," & y & "," & z
For n = 4 To 13 Step 1
i = y * 2 + x
x = y
y = z
z = i
b = b & "," & i
Next
Print b
End Sub
第2种算法的逻辑是:
(a月-2的月总数)* 2 + (a月-3月总数)
因为当月的生产数量为上个月的兔子总数,而当月的新兔子(即上个月新生的兔子,这个月还未能生产)数量为上上个月的总数。
第3种:
Private Sub Command1_Click()
i = 0
x = 1
y = 1
z = 2
b = x & "," & y & "," & z
For n = 4 To 13 Step 1
i = z * 2 - x
x = y
y = z
z = i
b = b & "," & i
Next
Print b
End Sub
(a月总数*2) - (a-2月总数)
这第2种算法和第3种算法是基于第一种算法的原理的。只不过实在太复杂了,我自己脑子里只能粗略整理它的逻辑关系(其实也不是很懂),所以写出来大家一定看不懂。。。
后记:这个经典的兔子数列其实还可以继续玩下去。有非常复杂的递推关系(自己说的,虽然没学过什么叫真正的递推不过应该差不多吧)。每个参数影响非常复杂。我本来想继续这个混乱的递推逻辑,但想到再复杂的算法的时候我差不多都要疯掉了。。啊啊啊,暂时就这样吧~~~大脑休息下。熄火。
- 大小: 8.4 KB
分享到:
相关推荐
经典斐波那契数列的算法实现教案.doc
斐波那契数列的三种算法,算法一:递归 #include #include long int fibo(int n) { if(n==0) return 0; if(n==1) return 1; return fibo(n-1)+fibo(n-2); } void main() {
斐波那契数列算法分析.doc
经典斐波那契数列的算法实现教案.pdf
C#,斐波那契数列(Fibonacci Sequence)的八种算法与源代码 斐波那契公元1170年生于意大利比萨,卒于1250年,被人称作“比萨的莱昂纳多”,是一名闻名于欧洲的数学家,其主要的著作有《算盘书》、《实用几何》和...
使用C++非递归实现fibonacci数列,对正在学习算法的同学应该挺有帮助的
斐波那契数列 *以兔子繁殖为例子而引入,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…… * 在数学逻辑上以递归方法定义
算法-数论- 斐波那契数列(Fibonacci).rar
用循环算法求解斐波那契数列,里面有详细代码文件,亲测可运行
用递推算法 迭代算法 公式法计算求第N个Fibonacci数,计算机能算出最大Fibonacci时N的值,计算1分钟内能计算几个Fibonacci,用公式法计算Fibonacci,当出现错误时,N为多少。
在数学上它以递归的方式进行定义,指这样的一个数列:0、1、1、2、3、5、8、13、21、34、55、89、144……,即前两个数为分别为0和1,从第3项开始,每项的值都等于其前两项之和。斐波那契数列Fib(n)用公式表示为: ...
递归算法算斐波那契数列热太热台湾热太热按时打发士大夫
斐波那契数列几种算法分析.doc
Fibonacci(斐波那契)数列的JAVA解法,包含了斐波那契数列常见问题的一些算法。
经典算法,斐波那契数列(Fibonacci)问题的解决,使用C#实现
C++实现Fibonacci数列递归及非递归算法
通过分别用递归法、迭代法、矩阵法以及公式法对斐波那契数列的C++算法进行分析,最终总结并得出计算斐波那契数列在时间效率层面上最优的算法为矩阵法,但综合考虑下来的最优算法为迭代法。
递归方法实现斐波那契数列
递归方法 def fibonacci(n): if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2) n = int(input("请输入要计算的斐波那契数列的项数:")) print("斐波那契数列的第", n, "项为:", fibonacci(n)) 2...
程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…… 在数学上,费波那契数列是以递归的方法来定义: F0 = 0 (n=0) F1 = 1 (n=1) Fn ...