算法很简单,大数自己想. :-) 
public static long num(int w) {
   long sum = 1; // itself
   if(w >= 5) {
         for(int i = 0; i < (int)((w-5)/3)+1; i++)
            sum += 3 + 3 * num(w - 5 - i*3);
   }
   return sum;
}

解决方案 »

  1.   

    public static long num(int w) {
       long sum = 1; // itself
       if(w >= 5) {
             for(int i = 0; i < (int)((w-5)/3)+1; i++)
                sum += 3 + 3 * num(w - 5 - i*3);
       }
       return sum;
    }这个算法行了
      

  2.   

    非常感谢,我试过了,这个算法是对的。
    可是还有一个小问题,  i    <  (int)((w-5)/3)+1是什么?   3  +  3  *  num(w  -  5  -  i*3)算的是什么的数字?
    我数学不是很好,让你们见笑了。这几天被它绕的头都晕了。
      

  3.   

    i    <  (int)((w-5)/3)+1==>此老鼠有多少个三周周期.
    3  +  3  *  num(w  -  5  -  i*3)==3公+3母生的老鼠