计算n代兔子数

来源:互联网 发布:阿里云幕布怎么申请 编辑:程序博客网 时间:2024/05/18 17:04

古典问题:有一只大兔子,大兔子每个月生一只小兔子,第二个月小兔子会长成大兔子,假如兔子都不死,问第N个月的兔子总数为多少?

解法一、循环

复制代码
 1 public long sumRubbit1(int n){ 2         long total = 0;    //兔子总数 3         int big = 1;    //大兔子总数 4         int middle = 0;    //中兔子总数 5         int little = 0;    //小兔子总数 6         if(n==1){ 7             total = big; 8         }else if(n==2){ 9             little = big;10             total = big+little;11         }else{12             little = big;13             int beforMiddle =0;    //上个月的中兔子总数14             for(int i=3;i<=n;i++){15                 beforMiddle = middle;16                 middle = little;        //中兔子数=上月小兔子数17                 little = big;            //小兔子数=上月大兔子数18                 big = big +beforMiddle;    //大兔子数=上月大兔子数+上月中兔子数19                 total = big+middle+little;20             }21         }22         return total;23     }
复制代码

解法一思路如下:

 

解法二、递归

复制代码
 1 public long sumRubbit2(int n){ 2         long total = 0;    //兔子总数 3         if(n==1){ 4             total = 1; 5         }else if(n==2){ 6             total = 2; 7         }else if(n==3){ 8             total = 3; 9         }else{10             total = sumRubbit2(n-1)+sumRubbit2(n-3);11         }12         return total;13     }
复制代码

 

解法二思路如下:如下例子

0 0
原创粉丝点击