2015-11-07 50 views
0

我想循環這一個,直到nr-of-bread是2如何做到這一點?如何在球拍中循環?

(when (and (>= money price-of-bread) (< nr-of-bread 2)) 
     (set! nr-of-bread (+ nr-of-bread 1)) (set! money (- money price-of-bread))) 
+1

'(商資金價格的麪包)' – uselpa

+3

@uselpa而'(分2(商資金價格-of麪包))'。 – Hauleth

回答

1

實現通過一個名爲let正在使用尾遞歸的最好方法:

(let loop ((nr-of-bread 0) 
      (rest money)) 
    (if (and (>= rest price-of-bread) (< nr-of-bread 2)) 
    (loop (add1 nr-of-bread) (- rest price-of-bread)) 
    nr-of-bread)) 
+0

在球拍中它是'add1',而不是'1+'。 – uselpa

+0

哦......現在修好了。我一直在MIT計劃上對IIRC球拍進行測試,所以我認爲他們也有'1 +'。但仍然可以解決問題。 – Hauleth

+0

在Racket中,您不應該使用'rest'作爲變量名稱,它會與內置函數衝突。 –