第二章 斐波那契之旅第1/4段

投票推荐 加入书签 章节错误?快速报错

  神圣罗马帝国皇室图书馆,海量的书架井然有序。

  一位头戴王冠的中年男子和一位学者在这里促膝长谈。

  此时夜深人静,牛油烛散发出柔和的光芒,勉强能照亮一小块区域。

  “斐波那契,你这兔子问题,寡人想了很久都没有头绪”。

  中年男子挠了挠头。

  腓特烈二世生平最大的业余爱好便是研究数学。

  而眼前这位学者,便是他的座上客,大名鼎鼎的斐波那契。

  “兔生二月便能繁衍,每月每对兔可生一对幼兔,则一年可得兔几何?”

  腓特烈自言自语着,沉浸其中。

  “二月之后可新生一对兔,故三月为两对兔,四月幼兔不足两月,故为三对兔,以此类推...”

  斐波那契耐心地解答道。

  “哈哈哈哈!爱卿果然才思敏捷!”

  腓特烈二世竖起了大拇指,眼中满是赞赏之色。

  “孤欲编纂《算书》,卿可为之”。

  话说完,君臣两人离席。

  斐波那契走在回住所的路上,脑海中却在回想刚才谈话的内容,似乎有所明悟。

  “何不将该类问题,阐述为通项公式?”

  他喃喃自语。

  回到住所,斐波那契赶紧打开一个小册子,拿起鹅毛笔蘸了蘸墨水,写下刚才的想法。

  “若有f(0)为0,f(1)为1,则f(n)为f(n-1)与f(n-2)之和”。

  斐波那契抬头看了看窗外的月光。

  月下的树梢之上,停留着一只枯叶蝶。

  那蝴蝶似乎有所感应,循着灯光,翩翩飞舞。

  斐波那契还在专注地思考着,根本没有察觉这只蝴蝶正朝着他飞过来。

  蝴蝶飞过窗台,然后轻轻地落在了斐波那契的肩头。

  下一刻,它消失了,杨成的意识出现在了斐波那契脑海中。

  “哇!”

  杨成惊讶地看着自己这身古欧洲的学者服饰,摸了摸下巴。

  他感觉自己的体貌特征来了个180度的大转变。

  眼前的小册子在烛光下浮现出一行行字,顿时吸引了杨成的注意力。

  “已知斐波那契通项公式f(n)=f(n-1)+f(n-2),编写求第N项斐波那契数的函数,N在20以内”。

  杨成瞪大了眼睛,这里电脑都没有,只有一支鹅毛笔,怎么写啊?

  手写?

  似乎问题也不是很大,求20项以内的斐波那契数,完全可以用简单的递归啊!

  杨成回忆了一下,然后用鹅毛笔蘸了蘸墨水,在小册子上写下了寥寥几行。

  这是一种“教科书式”的求解:

  要求第N项,那么就分解为求第N-1项和第N-2项。

  那N-1项又可以分解为求N-2和N-3项。

  以此类推,直到N为0,返回0,N为1,返回1。

  但这种方法之所以被称作“教科书式”,一是因为通俗易懂,二是因为效率低下。

  求重复的项数太多了,或者说重复计算太多了。

  杨成很清楚这种方法的弊端,但应付20以内的,绰绰有余哩!

  果不其然,在杨成写完最后一个括号以后,手中的小册子绽放出一道金光。

  不会爆出史诗装备来吧?

  小册子犹如脱离了重力的束缚一般,慢慢浮空。

  然后它一页接一页地自动翻页,就好比有人在翻阅一般。

  “啪嗒”。

  小册子掉落在了桌子上,金光收敛。

  什么奇迹也没有发生...

  杨成定睛一看,发现自己刚才手写的解题方法旁边多了一个小小的绿色对勾。

  “唉,没啥挑战性啊”。

  杨成活动了一下筋骨。

  据说是萌新程序员必写的代码Top10...

  这厮话音刚落。

  然后,他看到那个小册子自动地翻过了一页,上面又浮现了一些笔迹。

  “依上题,若N大于10000,且小于20000,作何解?”

  杨成念完这新内容,皱了皱眉头。

  “传统的递归方法求斐波那契数列,只限于小数求解,到了万级再用一般性的递归,效率低不说,还有可能导致递归栈溢出”。

  “那么如何在原来的代码上面做修改,来达到提高性能的目的呢?”

  杨成思索了片刻。

  “既然递归方法慢的根本在于重复性的计算太多,那么我可以使用缓存!”

本章未完,请点击下一段进行阅读!

章节目录