解题思路

  • 兔子的按状态分类出生一个月的,出生两个月的,出生3个月和超过3个月的
  • 出生刚一个月的萌新兔子数是上一轮的出生3个月的兔子数(n个他们能生出n个小萌新)
  • 出生2个月的兔子数,和出生一个月的萌新兔子数是一样的
  • 出生大于或等于3个月的兔子数就是之前的兔子数加上出生两个月的兔子数
  • 最后将这个3中状态的兔子数相加就行了
package main

import(
    "fmt"
)

func main(){
    var m int
    n,_ := fmt.Scan(&m);if n == 0{
        return
    }
    // a,b,c a,b,c 分别代表出生1个月,出生2个月,出生3个月的兔子数量
    a,b,c := 1,0,0
    for i := 1;i < m; i++{
        c += b
        b = a
        a = c 
    }
    fmt.Println(a+b+c)
}