簡體   English   中英

球拍遞歸

[英]Racket recursion

我是Racket的新手,我正在嘗試定義一個函數,該函數接受一個除數列表和一個數字列表進行測試,並對除數列表中的每個元素應用直接遞歸和一個“可拖放除數”函數。

我定義了一個函數drop-divisible,它接受一個數字和一個數字列表,然后返回一個新列表,該列表僅包含那些不能被數字“不可平分”的數字。 此功能不是問題,它可以工作。 所以我要麻煩的是將要調用此函數的函數及其本身。

這是我想出的。 我可以想象這遠非正確,但我不知道該怎么辦。

(define (sieve-with divisors testlist)
  (if (null? divisors)
      '()
      (begin
        (drop-divisible (first divisors) testlist)
              (sieve-with (rest divisors) testlist))))

您需要使用尾遞歸

(define (sieve-with divisors list)
    (cond [(empty? divisors) list]
          [else (sieve-with (rest divisors)
                            (drop-divisible (first divisors) list))]))

另外,請盡可能遠離begin 堅持功能范式。

暫無
暫無

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

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