簡體   English   中英

尾調用平方和遞歸 function 球拍

[英]Tail-Call sum-of-squares-recursive function Racket

我正在嘗試編寫尾調用遞歸 function 來查找列表中的平方和。 我有一些有效的代碼,但目前它是一個非尾調用 function。我如何將其更改為尾調用?

(define sum-of-squares
  (lambda (lst)
    (if (null? lst)
        0
        (+ (* (car lst) (car lst)) (sumsquares (cdr lst)))
        )))

將累加結果的 function 轉換為尾遞歸的常用方法是將累加器移動到參數中。 在下面的代碼中, 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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM