如何创建一个函数,将所有数字在1和"x"之间与dotimes相乘?

gn6*_*n66 3 scheme racket

我正在创建一个函数,它将1输入和"x"输入之间的所有数字与dotimes循环相乘.如果你愿意,检查我的功能并说出错误,因为我不熟悉Scheme中的循环.

(define (product x)
  (let ((result 1))
        (dotimes (temp x)
                 (set! result (* temp (+ result 1))))
    result))
Run Code Online (Sandbox Code Playgroud)

小智 5

使用递归.这是在Scheme/Racket中做事的方法.并尝试永远不要使用set!和其他改变变量的函数,除非真的没有其他选择.

这是Scheme中递归的教科书示例:

(define factorial
  (lambda (x)
    (if (<= x 1)
        1
        (* x (factorial (- x 1))))))
Run Code Online (Sandbox Code Playgroud)