古典问题:有一只大兔子,大兔子每个月生一只小兔子,第二个月小兔子会长成大兔子,假如兔子都不死,问第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 }
解法二思路如下:如下例子
时间: 2024-10-19 18:48:08