阿摩線上測驗 登入

申論題資訊

試卷:110年 - 110 經濟部所屬事業機構_新進職員甄試_統計資訊:1.資料庫及資料探勘 2.程式設計#103709
科目:國營事業◆1.資料庫及資料探勘 2.程式設計
年份:110年
排序:0

題組內容

四、下列問題,請用遞迴(Recursive)的方式來撰寫:

申論題內容

(一)實驗室培養某細胞,此細胞區分為成年與幼年細胞。每個成年細胞於 1 個月後會生出 2 個幼年細胞,幼年細胞於 1 個月後會變為成年細胞。請用遞迴方式撰寫一函式 CellNumber,輸入為 N 個月後,其傳回為 N 個月後細胞的總數。

詳解 (共 1 筆)

詳解 提供者:hchungw
def CellNumber(N, adult_cells=1, young_cells=0):
    if N == 0:
        return adult_cells + young_cells
    else:
        new_adult_cells = adult_cells + young_cells
        new_young_cells = adult_cells * 2
        return CellNumber(N - 1, new_adult_cells, new_young_cells)
# 測試範例
months = 5  # 例如,計算5個月後的細胞總數
total_cells = CellNumber(months)
print(f"{months}個月後的細胞總數: {total_cells}")
解釋
基礎情況:
當 N == 0 時,函式返回 adult_cells + young_cells,這是初始狀態下的總細胞數量。
遞迴步驟:
計算新一個月的成年細胞數量 new_adult_cells,等於上一個月的成年細胞數量加上幼年細胞數量。
計算新一個月的幼年細胞數量 new_young_cells,等於上一個月的成年細胞數量乘以2。
用 N-1 來調用遞迴函式 CellNumber,並將 new_adult_cells 和 new_young_cells 作為新參數傳入。
這樣,遞迴函式將會計算經過 N 個月後的總細胞數量。