11 下列遞迴函數,當執行 FR(51)後,回傳值為何?
61dbae7e0a649.jpg
(A) 3375
(B) 4000
(C) 4335
(D) 5000

答案:登入後查看
統計: A(14), B(2), C(139), D(7), E(0) #2851793

詳解 (共 2 筆)

#5349053


(共 1 字,隱藏中)
前往觀看
10
0
#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

私人筆記 (共 1 筆)

私人筆記#3998519
未解鎖
N*FR(N/3)=51*FR(17)=...
(共 45 字,隱藏中)
前往觀看
3
0