`

(转载)经典兔子数列(斐波那契数列)算法(公布3种)

阅读更多

斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为 “兔子数列”。
斐波那契数列

一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子?


 
第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

    * 斐波那契数列是一种经典的数学算法题,它可以通过 FOR 循环实现。 * 斐波那契数列的算法实现可以培养学生变通性思维能力和程序设计能力。 * 斐波那契数列的算法实现可以作为 FOR 循环构造知识点的稳固性算法题。 ...

    斐波那契数列的三种算法.doc

    斐波那契数列是一个经典的数学问题,它的定义是这样的:序列中的每个数字是前两个数字的和,通常以 0 和 1 开始。斐波那契数列的前几项是 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ...。这里,我们讨论了三种不同的算法来...

    Fibonacci数列斐波那契数列PPT学习教案.pptx

    Fibonacci数列是一种非常重要的数学概念,它的应用非常广泛,包括生物学、经济学、计算机科学等领域。下面我们将详细介绍Fibonacci数列的概念、性质和应用。 1. Fibonacci数列的定义 Fibonacci数列是一个递推关系...

    斐波那契数列算法分析.doc

    "斐波那契数列算法分析" 斐波那契数列是一种非常经典的数学概念,它的应用非常广泛,包括算法设计、生物学、经济学等领域。斐波那契数列的定义是:每个数都是前两个数的和,从第三个数开始,每个数都是前面两个数的...

    C语言解答经典的数学问题兔子繁衍问题即斐波那契数列问题

    这个经典的数学问题不仅展示了斐波那契数列的基本应用,同时也体现了编程解决问题的逻辑思维。通过迭代或递归方式实现斐波那契数列的计算是计算机科学教育中常见的练习,有助于学生理解和掌握算法以及控制流程的概念...

    算法-数论- 斐波那契数列(Fibonacci).rar

    这个数列由意大利数学家斐波那契(Leonardo Fibonacci)在13世纪引入,用于模拟兔子繁殖的问题,因此也被称为“兔子数列”。数列的定义非常简单:第一项是0,第二项是1,之后每一项都是前两项之和。用数学公式表示...

    算法设计实验报告之多种方法求解斐波那契数列

    在这个算法设计实验报告中,主要关注的是通过不同的方法求解斐波那契数列,这是一种经典的计算机科学问题。斐波那契数列是由0和1开始,后面的每一项数字是前面两项数字的和,通常表示为F(n)。实验的目标是实现四种...

    递归算法算斐波那契数列

    斐波那契数列(Fibonacci sequence)是这样一个数列:0, 1, 1, 2, 3, 5, 8, 13, 21, ...。该数列从第三项开始,每一项都等于前两项之和。数学上,斐波那契数列可以这样定义: - F(0) = 0 - F(1) = 1 - F(n) = F(n-1)...

    斐波那契数列几种算法分析.doc

    "斐波那契数列算法分析" 斐波那契数列是一种经典的算法问题,它的名称来自13世纪意大利数学家列昂纳多·斐波那契。该数列的定义是:每个数目都是前面两个数目的和,数列的前几个数目是:1, 1, 2, 3, 5, 8, 13, 21, ...

    C#,斐波那契数列(Fibonacci Sequence)的八种算法与源代码

    C#,斐波那契数列(Fibonacci Sequence)的八种算法与源代码 斐波那契公元1170年生于意大利比萨,卒于1250年,被人称作“比萨的莱昂纳多”,是一名闻名于欧洲的数学家,其主要的著作有《算盘书》、《实用几何》和...

    Labview实现递归:斐波那契数列

    在数学上它以递归的方式进行定义,指这样的一个数列:0、1、1、2、3、5、8、13、21、34、55、89、144……,即前两个数为分别为0和1,从第3项开始,每项的值都等于其前两项之和。斐波那契数列Fib(n)用公式表示为: ...

    非递归实现fibonacci数列

    使用C++非递归实现fibonacci数列,对正在学习算法的同学应该挺有帮助的

    (新课标)2020年高考数学 题型全归纳 斐波那契数列.doc

    斐波那契数列,又称为兔子数列,是由13世纪意大利数学家斐波那契提出的一个数学序列。这个数列的特点是每一项都等于前两项之和,起始的两项为1。具体地,斐波那契数列可以用递归公式表示:F0 = 1, F1 = 1, Fn = Fn-1...

    Fibonacci(斐波那契)数列的JAVA解法

    输出Fibonacci数列是一种使用循环来输出斐波那契数列的方法。该方法的思想是使用循环来输出斐波那契数列的每个数字。下面是一个输出Fibonacci数列的JAVA代码: public class Fib{ public static void main(String ...

    java算法——斐波那契数列

    斐波那契数列 *以兔子繁殖为例子而引入,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、…… * 在数学逻辑上以递归方法定义

    斐波那契数列

    斐波那契数列,又称为兔子数列,是由意大利数学家莱昂纳多·斐波那契在解决关于兔子繁殖问题时引入的一个数学概念。这个数列的特点是每个数字是前两个数字的和,起始的两个数字通常是0和1。用数学公式表示就是:F(0)...

    经典斐波那契数列的算法实现教案.pdf

    【斐波那契数列】是计算机科学中一个经典的数列概念,它的定义如下:斐波那契数列中的每一个数字是前两个数字的和。数列的初始两项通常是0和1,即F(0) = 0, F(1) = 1,后续项F(n) = F(n-1) + F(n-2)(n >= 2)。 在...

    用循环算法求解斐波那契数列

    用循环算法求解斐波那契数列,里面有详细代码文件,亲测可运行

    斐波那契数列常用算法.pdf

    本文在 C++ 中实现斐波那契数列算法有几种常见的方法; 递归算法 : 简单易懂,但效率低,因重复计算大量子问题。 迭代算法 :通过循环计算,避免了递归的重复计算,效率更高。 动态规划算法 : 利用数组存储计算...

    斐波那契数列(前100项).rar

    斐波那契数列是一个经典的数学概念,在计算机科学和编程领域有着广泛的应用。这个数列由0和1开始,后面的每一项数字都是前两项数字的和。换句话说,斐波那契数列的第n项(记作F(n))可以通过F(n-1)和F(n-2)来计算。...

Global site tag (gtag.js) - Google Analytics