我想學習一些功能性編程,並在計劃(球拍)中做項目歐拉問題讓我開始。我目前在problem 15,我想我有一個正確的函數來計算格子中的路徑數量。問題在於,對於大量gridSize函數來說,運行需要很長時間。尾巴呼叫優化球拍
(define uniqueTraverse
(lambda (x y gridSize)
(cond
((and (eq? x gridSize) (eq? y gridSize)) 1)
((eq? x gridSize) (uniqueTraverse x (+ y 1) gridSize))
((eq? y gridSize) (uniqueTraverse (+ x 1) y gridSize))
(else (+ (uniqueTraverse (+ x 1) y gridSize)
(uniqueTraverse x (+ y 1) gridSize))))))
我試圖找出如何使這個函數調用尾遞歸,但我不知道該怎麼做。我需要一些幫助,瞭解如何使用尾部呼叫優化來優化這樣的功能。
按行工作,你可以混爲一談的上一行和下一行因此,所有你需要的是_(N + 1)_'1's一行,首先,你可以然後遍歷_n_次,更新到位。 –