阿摩線上測驗 登入

申論題資訊

試卷:109年 - 109 普通考試_資訊處理:程式設計概要#88788
科目:程式設計
年份:109年
排序:0

申論題內容

一、下面的遞迴程式執行後,印出的信息為何?(作答必須解釋計算過程,只 寫答案而未加解釋,只能得部分分數。)5f1939bbb7f06.jpg

詳解 (共 2 筆)

詳解 提供者:fun40431
new(p) = new1(new2(p))
先跑new2 function,再跑new1 function

所以可得:
(1)q = 65
new(p) = new(65) = new1(new2(65))
(a)new2 function
因為65<91,故new2(65) = new2(65+11) = new2(76)
因為76<91,故new2(76) = new2(76+11) = new2(87)
因為87<91,故new2(87) = new2(87+11) = new2(98)
因為98>91,故得出new2(98) = 98,並回傳
(b)new1 function
因為98>90,故new1(98) = new1(new1(98-11)) = new1(new1(87))
因為87<90,故new1(87) = 87-10 = 77
new1(new1(87)) = new1(77)
因為77<90,故new1(77) = 77-10 = 67
因此印出:new(65) = 67,並跳下一行。

(2)q = 95
new(p) = new(95) = new1(new2(95))
(a)new2 function
因為95>91,故得出new2(95) = 95,並回傳
(b)new1 function
因為95>90,故new1(95) = new1(new1(95-11)) = new1(new1(84))
因為84<90,故new1(84) = 84-10 = 74
new1(new1(84)) = new1(74)
因為74<90,故new1(74) = 74-10 = 64
因此印出:new(95) = 64,並跳下一行。

(3)q = 100
new(p) = new(100) = new1(new2(100))
(a)new2 function
因為100>91,故得出new2(100) = 100,並回傳
(b)new1 function
因為100>90,故new1(100) = new1(new1(100-11)) = new1(new1(89))
因為89<90,故new1(89) = 89-10 = 79
new1(new1(89)) = new1(79)
因為79<90,故new1(79) = 79-10 = 69
因此印出:new(100) = 69,並跳下一行。

(4)q = 104
new(p) = new(104) = new1(new2(104))
(a)new2 function
因為104>91,故得出new2(104) = 104,並回傳
(b)new1 function
因為104>90,故new1(104) = new1(new1(104-11)) = new1(new1(93))
因為93>90,故new1(93) = new1(new1(93-11)) = new1(new1(82))
因為82<90,故new1(82) = 82-10 = 72
new1(new1(82)) = new1(72)
因為72<90,故new1(72) = 72-10 = 62,故可得new1(93) = 62
回傳到new1(104) = new1(new1(93)),可得new1(104) = new1(62)
因為62<90,故new1(62) = 62-10 = 52
因此印出:new(104) = 52,並跳下一行。

(5)q = 110
new(p) = new(110) = new1(new2(110))
(a)new2 function
因為110>91,故得出new2(110) = 110,並回傳
(b)new1 function
因為110>90,故new1(110) = new1(new1(110-11)) = new1(new1(99))
因為99>90,故new1(99) = new1(new1(99-11)) = new1(new1(88))
因為88<90,故new1(88) = 88-10 = 78
new1(new1(88)) = new1(78)
因為78<90,故new1(78) = 78-10 = 68,故可得new1(99) = 68
回傳到new1(110) = new1(new1(99)),可得new1(110) = new1(68)
因為68<90,故new1(68) = 68-10 = 58
因此印出:new(110) = 58,並跳下一行,然後結束此主程式運作。

由以上(1)到(5)可得知,最終輸出到螢幕之結果為:
new(65) = 67
new(95) = 64
new(100) = 69
new(104) = 52
new(110) = 58
詳解 提供者:皮卡112年高普考雙榜感謝阿摩

67
64
69
52
58