19. 具遞迴(Recursive)能力的程式語言中,哪種資料結構常用來儲存呼叫 程序的返回位址(Return Address)?
(A) 陣列(Array)
(B) 串列(List)
(C) 堆疊(Stack)
(D) 佇列(Queue)

答案:登入後查看
統計: A(32), B(17), C(203), D(60), E(0) #1403489

詳解 (共 5 筆)

#2150552

堆疊(Stack):先進後出(FILO)

舉例:學生交考卷,先交的人考卷會疊在下面,所以考卷比較晚才會改到。


佇列(Queue):先進先出(FIFO) 

舉例:排隊結帳,先排隊的人先結帳。

14
0
#3344000

 

當程式遇到 recursive call 時,必須保存當時的執行狀態;即 push 需要保存的內容到 stack memory 中

 由於 Stack 空間有限,若又不斷 push 的話就會爆掉,造成所謂的「Stack Overflow」:

 Recursive 所需的 Stack 空間= (每次 push 的量) * (recursive call 次數) 。

 

Push/Pop 執行的時間即是一個損耗,所以 Recursive 相當花時間

時間複雜度為 nO(2n)  

經典題型:最大公因數 (GCD)、費波納契數列 (Fibonacci Sequence)、河內塔 (Hanoi Tower)、N 個字元的排列組合。

 

1
0
#2135850
堆疊的操作是先進後出,也可以說是後進先出
(共 22 字,隱藏中)
前往觀看
0
2
#6049079
我參考了以下網址說明,蠻清楚的。

https://medium.com/traveling-light-taipei/%E6%BC%94%E7%AE%97%E6%B3%95%E7%AD%86%E8%A8%98-%E9%81%9E%E8%BF%B4-recursion-e66e81566679
0
0
#3826063
堆疊(Stack):先進後出(FILO)...
(共 45 字,隱藏中)
前往觀看
0
0