Java
一个只有母兔子的世界
方法一:没什么特色就是逻辑观察思考

思考发现,
第n月时 年龄为3个月及3个月以上大的兔子数目=(上个月的)年龄>=3g个月的兔子数目
                                               +(上个月的)年龄为2个月的兔子数目
        年龄为2个月的兔子数目=(上个月的)年龄为1个月的兔子数目
        年龄为1个月的兔子数目=(本月的)年龄为3个月的兔子数目(它本月变为3岁立即就生了)
     1月大兔 2月大兔 3月及以上大兔
第1月     1     0     0
第2月     0     1     0
第3月     1     0     1
第4月     1     1     1
第5月     2     1     2
第6月     3     2     3
第7月     5     3     5
第8月     8     5     8

代码如下:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            int sum=sumRubbit(n);
            System.out.println(sum);
        }
    }
    public static int sumRubbit(int n){
        int month1=0;//初始化设置的是2月的值,以便三月开始循环
        int month2=1;
        int month3=0;
        int sum=0;
        if(n==1||n==2){
            return 1;
        }
        for(int i=3;i<=n;i++){
            month3=month3+month2;
            month2=month1;
            month1=month3; 
        }
        sum=month1+month2+month3;
        return sum;
    }
}

方法2:递归
函数要实现第n个月的兔子总数,它和之前的兔子数有什么关系呢,递归关系式怎么写呢?
发现:

第n个月的兔子总数=第n-1个月的兔子总数+第n个月里新生的兔子数(即年龄为1的兔子数)
即:
第n个月的兔子总数=第n-1个月的兔子总数+第n个月里年龄>=3的兔子数
第n个月的兔子总数=第n-1个月的兔子总数+(第n-1月里年龄为2的兔子+第n-1月里年龄>=3的兔数)
第n个月的兔子总数=第n-1个月的兔子总数+(第n-2月里年龄为1的兔子+第n-2月里年龄为2的兔子+第n-2月里年龄>=3兔)
第n个月的兔子总数=第n-1个月的兔子总数+第n-2个月的兔子总数

代码:

package niuke0409;
import java.util.*;
public class Rabbit {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();
            int sum=sumRubbit(n);
            System.out.println(sum);
        }
    }
    public static int sumRubbit(int n){
        int sum=0;
        if(n==1||n==2){
            return 1;
        }
        sum=sumRubbit(n-1)+sumRubbit(n-2);
        return sum;
    }
}