民國110年 第2梯次 電腦軟體設計(JAVA)乙級 學科
第75題
有關Java 語言遞迴(Recursion)的敘述,下列那些正確?
題目
有關Java 語言遞迴(Recursion)的敘述,下列那些正確?
- (1) 一般使用遞迴解決問題較使用迴圈解決問題,需要宣告更多的變數
- (2) 遞迴函式的執行需要用到堆疊(Stack)
- (3) 尾端遞迴(Tail- recursio n) 經過適當編譯後的執行效率可以與迴圈相同
- (4) 所有的遞迴函式均可以迴圈改寫
官方答案
(2) 遞迴函式的執行需要用到堆疊(Stack)、(3) 尾端遞迴(Tail- recursio n) 經過適當編譯後的執行效率可以與迴圈相同、(4) 所有的遞迴函式均可以迴圈改寫
解析
遞迴每呼叫一次,就會把參數、區域變數與返回位址推入呼叫堆疊,因此必須有堆疊支援,選項2正確。尾端遞迴的遞迴呼叫是函式最後一個動作,之後沒有其他運算,編譯器可將其最佳化成跳躍指令,執行效率可與迴圈相當,選項3正確。理論上任何遞迴都能用迴圈搭配自行維護的堆疊改寫,選項4正確。至於選項1,遞迴通常把狀態放在參數中傳遞,反而不見得需要比迴圈更多的變數宣告,故此敘述不成立。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。