1
我想了解遞歸在解釋器方面是如何工作的。因此,我R中實現了一個簡單的遞歸函數:如何以及在哪裏存儲遞歸的臨時結果?
> fac <- function(x) {
+ print(x)
+ if(x==0) return(1)
+ else {x*fac(x-1)}
+ }
>
> fac(4)
[1] 4
[1] 3
[1] 2
[1] 1
[1] 0
[1] 24
>
我理解遞歸本身卻不怎麼解釋存儲中期業績。在這個例子中,我們從fac(4)
開始,它基本上返回4*fac(3)
,然後3*fac(2)
等等。但是,這些臨時結果在哪裏或如何存儲?一旦函數執行了最後的調用,即1*fac(0)
,它仍然需要總結先前調用的結果。但是,這些必須事先存儲或保存在內存中。我希望這是我可以理解的問題。不知道如何正確解釋...