阿摩線上測驗 登入

申論題資訊

試卷:95年 - 095年地方資訊處理(四等)#32439
科目:程式設計
年份:95年
排序:0

申論題內容

五、考慮下列程式片段: 
S1: procedure P(L) /* L 為一串數字*/ 
S2: 若 L 的長度為 2,則 return 此二數字之和 
S3: L1 = L 的前半部分 /* if L=1234, L1=12 */ 
S4: L2 = L 的後半部分 /* if L=1234, L2=34 */ 
S5: L3 =將 L 分成四部分,第 2 及第 3 部分之組合/* if L=1234, L3=23 */ 
S6: return (P(L1)+P(L2)+P(L3))
 若 L=87654321(長度為 8),則最後 return 之結果為何?(20 分)

詳解 (共 1 筆)

詳解 提供者:hchungw

這個程式的目的是將一串數字分成幾個部分,並且對這些部分進行處理。基於給定的程式碼,當輸入為L=87654321時,我們可以手動跟蹤程式的執行:
L的長度為8,不符合S2的條件,因此進行分割。
L1 = 8765
L2 = 4321
L3 = 65 + 43 = 6543
對L1、L2和L3進行遞迴:
對L1=8765:
L1 = 87
L2 = 65
L3 = 7 + 6 = 76
結果 = P(87) + P(65) + P(76)
對L2=4321:
L1 = 43
L2 = 21
L3 = 3 + 2 = 32
結果 = P(43) + P(21) + P(32)
對L3=6543:
L1 = 65
L2 = 43
L3 = 5 + 4 = 54
結果 = P(65) + P(43) + P(54)
因為L1, L2, 和 L3都是兩位數,所以直接返回這兩位數之和:
對L1=87,返回15
對L2=65,返回11
對L3=76,返回13
對L1=43,返回7
對L2=21,返回3
對L3=32,返回5
對L1=65(再次),返回11
對L2=43(再次),返回7
對L3=54,返回9
將這些結果相加以獲得最終結果:
P(8765) = 15 + 11 + 13 = 39
P(4321) = 7 + 3 + 5 = 15
P(6543) = 11 + 7 + 9 = 27
最終結果:
P(87654321) = P(8765) + P(4321) + P(6543) = 39 + 15 + 27 = 81
因此,根據給定的程式片段,最後返回的結果是81。