存档

文章标签 ‘Fibonacci’

算法解题思考过程[总结]

2009年11月4日 Killman 没有评论

今天又做了个斐波那契数列相关的题目:上台阶,每次可走一台阶和两台阶,问上10个台阶有多少种走法。 (出处:阅微堂. EMC笔试 , 89种) 。 上次的农夫养牛问题也是个斐波那契问题。

对于斐波那契这一类问题,因为特征过于鲜明,可以一看题目就套上,用的联想的思维方式就解决了。不过如果是在不熟悉此类问题时,首先是根据题目估计可用演绎推理来解决,然后尝试 f(1), f(2), f(3) = f(2)+f(1) 之类的推理。 演绎/推理确实是一项十分重要的解题方法,尤其是在对问题领域不熟悉的时候。

延伸阅读:

  1. 刘未鹏:知其所以然地学习(以算法为例)

农夫养牛问题

2009年11月1日 Killman 没有评论

算法题来自 CSDN :http://topic.csdn.net/u/20091001/15/40BF4993-8ED7-45CC-968F-97C524DAE3C4.html

问题: 一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛……问农夫10年后有多少头牛?n年呢?

这个问题的数学模型是类似于斐波那契(Fibonacci)数列,其计算式为:

F(n) = 1 , n<3

F(n) = F(n-3) + F(n-1) , n >=3

十年后是28头牛。实现算法时该贴提到了两种实现方式,一种是用过程的方法实现该数列,另一种是面向对象的方法实现。第二种方法确实更好一些,但是原帖实现似乎并不理想。