我通過這本書Structure and implementation of computer programs工作,並在其中一章有用來計算一個數的階乘一些代碼:定義一個函數內聯與否有什麼區別?
(define (factorial n)
(fact-iter 1 1 n))
(define (fact-iter product counter max-count)
(if (> counter max-count)
product
(fact-iter (* counter product)
(+ counter 1)
max-count)))
在本書中,我瞭解到,我可以用另一種定義內置函數的早期像這樣的功能:
(define (factorial n)
(define (fact-iter product counter max-count)
(if (> counter max-count)
product
(fact-iter (* counter product)
(+ counter 1)
max-count)))
(fact-iter 1 1 n))
我知道,使用第二種方法fact-iter
的factorial
範圍之外將無法訪問,但我想知道,當我運行的factorial
第二個版本到底發生了什麼?
一個新的本地的符號fact-iter
綁定都定義和創建一個新的功能或程序編譯時,這種結合創造了一次?
我從Java背景的,這是目前尚不清楚對我來說。
我忘了計劃謝謝。 – 2013-03-06 14:59:16