使用高階函式而不是遞迴
如果存在表示右遞迴模式的更高階函式,則通常的做法是使用更高階函式而不是遞迴。在我們的例子中,sum-of-numbers
可以使用 foldl
定義:
#lang racket
(define (sum-of-numbers l)
(foldl + 0 l))
(sum-of-numbers '(1 2 3 4 5)) ;; => 15
可以直接在列表中呼叫 foldl
:
#lang racket
(foldl + 0 '(1 2 3 4 5)) ;; => 15