问题:
          一只刚出生的小牛,4年后生一只小牛,以后每年生一只。现有一只刚出生的小牛,问N年后共有牛多少只?


1.原始笨方法
小牛生产小牛的问题解决集粹private int Comput(int years)
        }
特点:容易理解,不过效率太低.不具有实用价值.

2.采用HashTable优化方案
小牛生产小牛的问题解决集粹Hashtable table = new Hashtable();
小牛生产小牛的问题解决集粹        
public long Compute(int years)
        }
特点:在第一种方案的基础上性能有了大幅度的提高.采用HashTable存储老牛的生育曲线,从而达到以后的小牛重复利用老牛的生育曲线.(直接取其生产数量)

3.采用数组的方式描述
小牛生产小牛的问题解决集粹public int Compute(int years)
        }

特点:只采用一个循环搞定,效率极高.

3.采用优化递归公式实现
 f(n)   =   f(n-1)+f(n-3)  [n   >   3]   
 f(n)   =   1                   [0   <   n   <=   3]  
小牛生产小牛的问题解决集粹public int Comput(int x)
   

特点:代码简洁,功能简单实现,但使用递归当然会牺牲一定的效率作为代价.

前些天在网络上偶然发现的生产小牛问题.于是搜集整理了一下,方便大家共同研究学习使用.
有好的算法大家共同研究^_^

相关文章: