题记------学习别人的精髓,并加以总结,消化吸收,这就是提高!!!
斐波那契数列是古典算法中的经典,面试中常常出现,我们不仅要掌握递归,还要理解迭代算法,以备不时之需
斐波那契数列是形如1,1,2,3,5,8,13,21....的数列,不多说上代码,如果大家有更好的算法,希望赐教。
1 /** 2 * 采用递归 3 * @param month 4 * @return 5 * @author GongLi 6 */ 7 public int RabbitCount(int month){ 8 if(month==1||month==2){ 9 return 1; 10 }else{ 11 return RabbitCount(month-1)+RabbitCount(month-2); 12 } 13 } 14 15 /** 16 * 采用迭代 17 * @param month 18 * @return 19 * @author GongLi 20 */ 21 public int RabbitCountByIteration(int month){ 22 int firstRabbit = 1;//初始化前一个月兔子为1只 23 int secondRabbit = 1;//初始化后一个月兔子为1只 24 for(int i=3;i<=month;i++){ 25 int temp = secondRabbit;//将后一个月的兔子数放入一个临时变量,目的是作为下一次迭代的上一个月的兔子数 26 secondRabbit += firstRabbit;//后一个月的兔子数为前两个月的兔子数相加 27 firstRabbit = temp;//将上一次迭代的后一个月的兔子数,变为下一次迭代先一个月的兔子数 28 } 29 return secondRabbit; 30 }