递归--Fibonacci数列

??????? 前置文章:递归算法:08643.cn/p/703069f3ba3f .

??????? 虽然我说递归算法算得上是一种底层的算法,但是递归算法的应用很广泛的。

??? 递归算法的一个经典应用是Fibonacci数列(斐波那契数列),我为数不多的非常喜欢的一个数列。Fibonacci数列的定义是这么说的:斐波那契数列的每一项都等于前两项之和(明显第一项和第二项是特殊项)。

??? 斐波那契的概念非常容易理解。打个比方,我现在手里有一片苹果林,我这苹果林每年都会生产很多的苹果,我拿这苹果干嘛呢,我这苹果不吃,我也不卖,我用来喂兔子,我养兔子。我养这兔子跟吃苹果不一样,我这兔子第一年出生,然后长一年,第二年开始能进行生殖,一年一次,一次一窝,一窝一个。


我从邻居换来的兔一

??????????? 我今年就抱着一堆苹果去我邻居那换了个兔崽子,我还给它起了个名,叫兔一,第一年我有一只兔子。? F(1) = 1.

??????????? 兔一今年长一年,然后第二年,兔一生了一个兔子,我叫它兔二,第二年我有俩兔子,成熟得兔一和还是崽子的兔二。 F(2) = 2.

??????????? 第三年,兔一生一个兔子,叫兔三,兔二长大成兔,我这第三年就有了三只兔子,兔一二三。 F(3) =F(1)+F(2) = 1+2 = 3.

??????????? 第四年,兔一、兔二都生了一只,叫兔四、兔五,然后兔三长大了。说到这,有种葫芦娃的感觉是吧,我这兔老大、老二、老三都有了,然后一下出来了兔四五。然后这兔子现在又多了,我现在五只兔子。 F(4) = F(2) + F(3) = 2+3 = 5.

??????????? 第五年,兔一二三都开始生兔子了,然后兔四五长大了,我又多了三只兔子,兔六七八。我现在有了八只兔子了。F(5) = F(4) + F(3) = 5+3 = 8.

??????????? 第六年,我这兔子就非常可观了,我有8+5=13只兔子。说到这里,已经非常明白了,我这里兔子是一年熟,然后开始生殖的,也就是隔年生。那我今年拥有的兔子就是我去年有的兔子和我前一年有的兔子之和,因为前年的兔子不管大小,今年一定能生,生下来的就是净增长。所以,我这兔子就能推出一个公式:F(n) = F(n-1)+ F(n-2) (n>=2).

??? 我这养兔子的过程就是一个典型的斐波那契数列的问题,一个递推的问题,这个题目也是斐波那契数列的典型应用。而递归要求的基准情形,也就是递归出口:我兔子养的太多了,我苹果不够了,那我就不继续养兔子,我可能是把它们卖了,或者是送人,那这个递归就结束了。

?? 用兔子来讲斐波那契数列非常清晰明了了。斐波那契数列的递推算法也就有了:

int fib[50];

void fibonacci(int n) {

??????? fib[0] = 1;

??????? fib[1] = 1;

??????? for( int i=2; i<=n; i++){

??????????????? fib[i] = fib[i-1] + fib[i-2];

??????? }

}

??? 我说我很喜欢斐波那契数列,不仅仅是因为斐波那契数列在算法应用上简单并且实用性广,而是因为,斐波那契数列的美,数学美,艺术美:

??? 斐波那契数列的数学美是美在:数列中的每前后两项做的比值,也就是F(n-1)/F(n) ,随着斐波那契数列数值的增长,比值趋近于黄金分割线,也就是0.618。而斐波那契数列的艺术美是美在:

斐波那契螺旋线

??? 斐波那契螺旋曲线?。?!多么令人惊艳的数学图形。

??? 完美的斐波那契,真正的演算公式或者算法公式却仅仅用几行文字就能表达出来,如我所说:

? ? ? ? 完美的递归,简陋的递归。


最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,100评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,308评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,718评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,275评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,376评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,454评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,464评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,248评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,686评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,974评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,150评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,817评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,484评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,140评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,374评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,012评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,041评论 2 351

推荐阅读更多精彩内容

  • 假设第1个月有1对刚诞生的兔子,第2个月进入成熟期,第3个月开始生育兔子,而1对成熟的兔子每月会生1对兔子,兔子永...
    rainchxy阅读 8,079评论 0 1
  • 递归在解决某些问题的时候使得我们思考的方式得以简化,代码也更加精炼,容易阅读。那么既然递归有这么多的优点,我们是不...
    Clemente阅读 8,092评论 0 5
  • 递归是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他算法设计方法之前先讨...
    march_1991阅读 4,086评论 0 2
  • (本文来自:成婷) 看了六七年的各个名医,吃了各种神奇的良药,可惜姨妈君依旧我行我素。 (旁边备注:月经不规律,来...
    末年琼阅读 153评论 0 0
  • 大家好,今天与大家聊的话题是:跟什么样的人合作才能赚钱? 答案是,只有跟本来就能赚钱的人合作,才能赚钱。 社会的真...
    顺天创业阅读 227评论 0 0