2012-01-01 63 views
0

我有這樣的情形:一個遞歸過程(或函數)被稱爲像函數遞歸,SAS中會發生什麼?

{DoSomething Data C} 

和C是應存儲的最終結果的變量,函數原型是

proc {DoSomething Data N} 
    %.. 
    %.. 
    {DoSomething Data M} 
    N = 1 + M 
end 

,N是應該存儲最終結果的變量,但也應該存儲在過程的本地範圍中。

現在有人告訴我,起初,當程序被調用時,SAS是:

通知等價集合C和N之間(包括暫時未綁定)

那麼所有的遞歸已經完成之後,SAS是

注意?帽子C和N被綁定到一個值(6)

離開SAS留的方法,用

因爲你破壞N個變量之後。這很好。

我的問題是:在程序遞歸期間會發生什麼? C變量是否鏈接到部分值結構1 + M?然後下一次M鏈接到1 + M2?

回答

1

不,沒有部分結構在奧茲,只要我們談論簡單的整數算術。

此語句:

N = 1 + M 

將阻塞,直到M被完全確定,即結合到一個整數。

要真正理解正在發生的事情,我必須看完整的代碼。 但我假設有一個基本情況返回一個具體的值。一旦達到基本情況,遞歸將「冒泡」,將1添加到內部調用的結果中。

換句話說,的C結合將僅在最外的過程調用,其中M5因此C勢必6的端部而改變。

+0

我知道了!有人告訴我,C的環境綁定會在每次迭代時都會改變,指向新的部分N ..但這聽起來很愚蠢 – 2012-01-01 17:19:00