本篇文章资料:
若干篇文章博客,感谢
斐波那契数列在数学和生活以及自然界中都非常有用
费波那契数列的来源与定义
费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数、斐波那契数列、费氏数列、黄金分割数列。
因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34......
列昂那多·斐波那契于1202年研究兔子产崽问题时发现了此数列。
//设一对大兔子每月生一对小兔子,每对新生兔在出生一个月后又下崽,假若兔子都不死亡。 //问:一对兔子一年能繁殖成多少对兔子?
题中本质上有两类兔子:一类是能生殖的兔子,为大兔子;新生的兔子不能生殖,为小兔子;小兔子一个月就长成大兔子,求的是大兔子与小兔子的总和?
/** 十二月时有大兔子144对,小兔子89对,共有兔子144+89=233对 从上表看出: ①每月小兔对数=上月大兔对数 ②每月大兔对数等于上个月大兔对数与小兔对数之 综合①②两点可得:每月大兔对数等于前两个月大兔对数之和 如果用un表示第n月的大兔对数,则有un=un-1+un-2(n > 2) 每月大兔对数un排成数列为:1、1、2、3、5、8、13、21、34、55、89、144… 那么此组数列就称为斐波那契数列 */
在数学上,费波那契数列是以递归的方法来定义:
- (n≧2)
用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出。
首几个费波那契系数是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……
特别指出:0不是第一项,而是第零项。
计算机中的实现
python版
import sys def fibonacci(n): # 生成器函数 - 斐波那契 a, b, counter = 0, 1, 0 while True: if counter > n: return yield a a, b = b, a + b counter += 1 f = fibonacci(10) # f 是一个迭代器,由生成器返回生成 while True: try: print(next(f), end=" ") except StopIteration: sys.exit()
JavaScript版
function fib(n) { var fib_n = function(curr, next, n) { console.log(curr); if (n == 0) { return curr; } else { return fib_n(next, curr+next, n-1); } } return fib_n(0, 1, n); } fib(10);
Java版
public static int fibonacci(int n) { return excute(0, 1, n); } public static int excute(int current, int next, int n) { System.out.println(current); if (n == 0) return current; else return excute(next, next + current, n-1 ); } public static void main(String[] args) { fibonacci(10); }
生活中的意义
生活中的斐波那契数列
斐波那契数列中的斐波那契数会经常出现在我们的眼前——比如松果、凤梨、树叶的排列、一些花朵的花瓣数(典型的有向日葵花瓣),蜂巢,蜻蜓翅膀,黄金矩形、黄金分割、等角螺线,十二平均律等。
斐波那契数与植物花瓣:
3————————兰花、百合花、茉莉花
5————————蓝花耧斗菜、金凤花、飞燕草、毛茛花
8————————翠雀花
13————————金盏和玫瑰
21————————紫宛
34、55、89————雏菊
黄金分割
随着数列项数的增加,前一项与后一项之比越来越逼近黄金分割的数值0.6180339887…
算了,本来是学python的时候看到一个实现斐波那契数列的demo,没想到研究了半下午的数学
至于斐波那契数列的作用我就不多说了,总之是非常非常的广,生物,艺术,金融......
公众号: