首页 文章

组! Racket模块ERROR中的未绑定标识符

提问于
浏览
1

我尝试编写一个函数,在第一个和第二个参数之间返回一个随机数 .

(随机 - 40 80之间)

应该给出40到80之间的随机数 . 这是代码:

(define (random-between x y)
   ((set! result (random y))
        (if (> result x)
            result
            (random-between x y))))

我想当函数第二次递归运行时,随机函数会创建一个新的结果,并再次测试,如果它高于x,则输出为最终结果 .

这是我第一次使用“套装!”它给了我这个错误:

set!:模块中的未绑定标识符:result

其他类似的问题并没有帮助我找到解决方案 .

1 回答

  • 1

    我将回答我自己的问题,因为我希望其他人回答这个问题 . 不是狡猾的答案或预订建议 .

    是的,您需要使用具有以下语法的let:

    (let ([id value]) body-which-is-evaluated-after)
    

    这是没有递归速度效率的代码 .

    (define (random-between x y)
        (let ([result (- y x)]) 
             (+ (random result) x)))
    

相关问题