題組內容
(一)實驗室培養某細胞,此細胞區分為成年與幼年細胞。每個成年細胞於1個月後會生出 2個幼年細胞,幼年細胞於1個月後會變為成年細胞。請用遞迴方式撰寫一函式 CellNumber,輸入為N個月後,其傳回為N個月後 細胞的總數。(8分)
申論題作答 (共 1 筆)
詳解 (共 10 筆)
思考邏輯:
x:成年細胞 y:幼年細胞
f(0) = x = 1
過一個月後↓↓上個月的成年細胞的迸出兩個幼年細胞,上個月的幼年細胞變成成年細胞
f(1) = x + 2y = 3
過一個月後↓↓上個月的成年細胞的迸出兩個幼年細胞,上個月的幼年細胞變成成年細胞
f(2) = x + 2y + 2x = 3x + 2y = 5
過一個月後↓↓上個月的成年細胞的迸出兩個幼年細胞,上個月的幼年細胞變成成年細胞
f(3) = 3x + 6y + 2x = 5x + 6y = 11
過一個月後↓↓上個月的成年細胞的迸出兩個幼年細胞,上個月的幼年細胞變成成年細胞
f(4) = 5x + 10y + 6x = 11x + 10y = 21
… 以此類推
public static int CellNumber(int n_month){
if(n_month==0)
return 1;
else if(n_month==1);
return 3;
else
return CellNumber(n_month-1) + 2*CellNumber(n_month-2);
// 上月的沒迸,只是變成年 + 前月的有迸兩個幼年
}
int CellNumber(int months, int adult, pre_baby){
int baby = adult*2;
int adult = pre_baby; //前個月baby長大
int sum = adult + baby; //當月成長
if (month == 1){
return sum;
}
CellsNumber(months-1, adult, baby)
}
私人筆記 (共 1 筆)