Fabonacci 数列,也就是”兔子数列“,
如果第一项为0的话,就是,
0,1,1,2,3,5,8,13,21,34,55,89……
第一项不是0也可以,
1,1,2,3,5,8,13,21,34,55,89……
它是一个无限长数列。
它的特点是,除了前两项0和1之外,或者不考虑0,除了前两项1和1之外,后面的每一项都是其前两项的和。其通项形式为,F[n]=F[n-1]+F[n-2](n>=2,F[0]=1,F[1]=1)
百度百科上是这么写的:
在数学历史上,欧洲黑暗时期过后,第一位有影响的数学家是斐波那契(L.Fibonacci,1170一1250)。他早年就随其父在北非师从阿拉伯人学习算学,后又游历地中海沿岸诸国,回意大利后写成《算经》,也翻译成《算盘书》。这部很有名的著作主要是一些源自古代中国、印度和希腊的数学问题的汇集,内容涉及整数和分数算法、开方法、二次和三次方程以及不定方程。特别是,在1228年的《算经》修订版上载有如下“兔子问题”:
“斐波那契数列”是什么?用笔画出松果的走向,有趣的现象发生了
如果每对兔子(一雄一雌)每月能生殖一对小兔子(也是一雄一雌,下同),每对兔子第一个月没有生殖能力,但从第二个月以后便能每月生一对小兔子.假定这些兔子都没有死亡现象,那么从第一对刚出生的兔子开始,12 个月以后会有多少对兔子呢? 解释说明为:一个月:只有一对兔子;第二个月:仍然只有一对兔子;第三个月:这对兔子生了一对小兔子, 共有 1+1=2 对兔子.第四个月:最初的一对兔子又生一对兔 子,共有 2+1=3 对兔子.则由第一个月到第十二个月兔子的 对数分别是,0,1,1,2,3,5,8,13,21,34,55,89,144, ……,后人为了纪念提出兔子繁殖问题的斐波纳契, 将这个兔子数列称为斐波那契数列, 即把,0,1,1,2,3,5,8,13,21,34……这样的数列称为斐波那契数列。
这里需要特别注意的是,数列中每一项的数值的单位是“对”也就是“一雄一雌”两只兔子,而不是一只兔子。这一点特别容易被忽视。
随着数列长度的增加,前后两项的比越来越接近于黄金分割率0.618034的倒数1.618034.
这个倒数是方程,
x(x-1)=0
的正根,负根的绝对值为黄金分割率。
C#上有一个很好用的绘图库,Nakov.TurtleGraphics。
它其实就是C#版本的Turtle(Python),也就是早年的LOGO语言的海龟绘图。
这件事其实就是为了画出直角转弯的斐波那契数列,而不是为了介绍绘图工具。
private void ButtonDraw_Click(object sender, EventArgs e){// Assign a delay to visualize the drawing processTurtle.Delay = 0;Turtle.PenSize = 4;Turtle.ShowTurtle = false;// Draw a equilateral triangleTurtle.PenColor = Color.Green;Turtle.PenUp();Turtle.Forward(160);Turtle.Rotate(90);Turtle.Forward(160);Turtle.Rotate(-90);Turtle.PenDown();int length;int an_1 = 1, an_2 = 0;for (int i = 0; i < 16; i++){length = an_1 + an_2;Turtle.Forward(length);Turtle.Rotate(90);//Debug.WriteLine(length);an_1 = an_2;an_2 = length;}}
Github: https://github.com/yyl-20020115/TurtleGraphics.NET.git