11 下列遞迴函數,當執行 FR(51)後,回傳值為何?
(A) 3375
(B) 4000
(C) 4335
(D) 5000
答案:登入後查看
統計: A(14), B(2), C(139), D(7), E(0) #2851793
統計: A(14), B(2), C(139), D(7), E(0) #2851793
詳解 (共 2 筆)
#5975068
這個遞迴函數是計算 N 的階乘,但是每次遞迴呼叫的數字是 N/3。當你執行 FR(51) 時,會一直將數字除以 3 直到數字小於等於 1 為止。
我們可以一步步展開遞迴來看:
FR(51) 返回 51 * FR(51/3)
FR(51/3) 返回 17 * FR(17/3)
FR(17/3) 返回 5 * FR(5/3)
FR(5/3) 返回 1 * FR(1/3)
FR(1/3) 返回 1
然後將這些值往回代入:
FR(5/3) 返回 1 * FR(1/3) = 1
FR(17/3) 返回 5 * FR(5/3) = 5 * 1 = 5
FR(51/3) 返回 17 * FR(17/3) = 17 * 5 = 85
FR(51) 返回 51 * FR(51/3) = 51 * 85 = 4335
所以,當執行 FR(51) 後,會得到回傳值為 4335。
4
0