码迷,mamicode.com
首页 > 编程语言 > 详细

算法:兔子生兔子

时间:2016-08-14 07:26:01      阅读:305      评论:0      收藏:0      [点我收藏+]

标签:

古典问题:有一只大兔子,大兔子每个月生一只小兔子,第二个月小兔子会长成大兔子,假如兔子都不死,问第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     }

 

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

技术分享

 

算法:兔子生兔子

标签:

原文地址:http://www.cnblogs.com/cheneva/p/5769198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!