我正在嘗試撰寫一個尾呼叫遞回函式來查找串列中的平方和。我有一些有效的代碼,但目前,它是一個非尾呼叫函式。我將如何將其更改為尾隨?
(define sum-of-squares
(lambda (lst)
(if (null? lst)
0
( (* (car lst) (car lst)) (sumsquares (cdr lst)))
)))
uj5u.com熱心網友回復:
將累加結果的函式轉換為尾遞回的常用方法是將累加器移動到引數中。在下面的代碼中,sum引數累加平方和。
(define sum-of-squares
(lambda (lst)
(define recursive-sos
(lambda (lst sum)
(if (null? lst)
sum
(recursive-sos (cdr lst)
( (* (car lst) (car lst))
sum)))))
(recursive-sos lst 0)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/435099.html
