2015-11-07 65 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'作为变量名称,它会与内置函数冲突。 –