我尝试编写一个在第一个和第二个参数之间返回一个随机数的函数。
(随机 - 40 80之间)
应该提供40到80之间的随机数。这是代码:
(define (random-between x y)
((set! result (random y))
(if (> result x)
result
(random-between x y))))
我想当函数第二次递归运行时,随机函数会创建一个新的结果,它会再次被测试,如果它高于x,则输出为最终结果。
这是我第一次使用“套装!”它给了我这个错误:
set!:模块中的未绑定标识符:结果
其他类似的问题并没有帮助我找到解决方案。
答案 0 :(得分:1)
我会回答我自己的问题,因为我希望其他人回答这个问题。不是狡猾的答案或预订建议。
是的,您需要使用具有以下语法的 let :
(let ([id value]) body-which-is-evaluated-after)
这是没有速度效率递归的代码。
(define (random-between x y)
(let ([result (- y x)])
(+ (random result) x)))